java常量池技术  

java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中

Java是一种动态链接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值外,还包含一些以文本形式出现的符号引用,比如:
类和接口的全限定名;
字段的名称和描述符;
方法的名称和描述符。

Constant pool:

#1 = Methodref          #32.#86       // java/lang/Object."<init>":()V

#2 = Fieldref           #31.#87       // com/bookStore/commons/beans/User.id:Ljava/lang/Integer;

#3 = Fieldref           #31.#88       // com/bookStore/commons/beans/User.username:Ljava/lang/String;

#4 = Fieldref           #31.#89       // com/bookStore/commons/beans/User.password:Ljava/lang/String;

#5 = Fieldref           #31.#90       // com/bookStore/commons/beans/User.gender:Ljava/lang/String;

#6 = Fieldref           #31.#91       // com/bookStore/commons/beans/User.email:Ljava/lang/String;

#7 = Fieldref           #31.#92       // com/bookStore/commons/beans/User.telephone:Ljava/lang/String;

#8 = Fieldref           #31.#93       // com/bookStore/commons/beans/User.introduce:Ljava/lang/String;

#9 = Fieldref           #31.#94       // com/bookStore/commons/beans/User.activeCode:Ljava/lang/String;

#10 = Fieldref           #31.#95       // com/bookStore/commons/beans/User.state:I

#11 = Fieldref           #31.#96       // com/bookStore/commons/beans/User.registTime:Ljava/util/Date;

#12 = Fieldref           #31.#97       // com/bookStore/commons/beans/User.role:Ljava/lang/String;

#13 = Class              #98           // java/lang/StringBuilder

#14 = Methodref          #13.#86       // java/lang/StringBuilder."<init>":()V

#15 = String             #99           // User{id=

#16 = Methodref          #13.#100      // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

#17 = Methodref          #13.#101      // java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;

#18 = String             #102          // , username=\'

#19 = Methodref          #13.#103      // java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;

#20 = String             #104          // , password=\'

#21 = String             #105          // , gender=\'

#22 = String             #106          // , email=\'

#23 = String             #107          // , telephone=\'

#24 = String             #108          // , introduce=\'

#25 = String             #109          // , activeCode=\'

#26 = String             #110          // , state=

#27 = Methodref          #13.#111      // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;

#28 = String             #112          // , role=\'

#29 = String             #113          // , registTime=

#30 = Methodref          #13.#114      // java/lang/StringBuilder.toString:()Ljava/lang/String;

#31 = Class              #115          // com/bookStore/commons/beans/User

#32 = Class              #116          // java/lang/Object

#33 = Utf8               id

#34 = Utf8               Ljava/lang/Integer;

#35 = Utf8               username

#36 = Utf8               Ljava/lang/String;

#37 = Utf8               password

#38 = Utf8               gender

#39 = Utf8               email

#40 = Utf8               telephone

#41 = Utf8               introduce

#42 = Utf8               activeCode

#43 = Utf8               state

#44 = Utf8               I

#45 = Utf8               role

#46 = Utf8               registTime

#47 = Utf8               Ljava/util/Date;

#48 = Utf8               <init>

#49 = Utf8               ()V

#50 = Utf8               Code

#51 = Utf8               LineNumberTable

#52 = Utf8               LocalVariableTable

#53 = Utf8               this

#54 = Utf8               Lcom/bookStore/commons/beans/User;

#55 = Utf8               getId

#56 = Utf8               ()Ljava/lang/Integer;

#57 = Utf8               setId

#58 = Utf8               (Ljava/lang/Integer;)V

#59 = Utf8               getUsername

#60 = Utf8               ()Ljava/lang/String;

#61 = Utf8               setUsername

#62 = Utf8               (Ljava/lang/String;)V

#63 = Utf8               getPassword

#64 = Utf8               setPassword

#65 = Utf8               getGender

#66 = Utf8               setGender

#67 = Utf8               getEmail

#68 = Utf8               setEmail

#69 = Utf8               getTelephone

#70 = Utf8               setTelephone

#71 = Utf8               getIntroduce

#72 = Utf8               setIntroduce

#73 = Utf8               getActiveCode

#74 = Utf8               setActiveCode

#75 = Utf8               getState

#76 = Utf8               ()I

#77 = Utf8               setState

#78 = Utf8               (I)V

#79 = Utf8               setRegistTime

#80 = Utf8               (Ljava/util/Date;)V

#81 = Utf8               getRole

#82 = Utf8               setRole

#83 = Utf8               toString

#84 = Utf8               SourceFile

#85 = Utf8               User.java

#86 = NameAndType        #48:#49       // "<init>":()V

#87 = NameAndType        #33:#34       // id:Ljava/lang/Integer;

#88 = NameAndType        #35:#36       // username:Ljava/lang/String;

#89 = NameAndType        #37:#36       // password:Ljava/lang/String;

#90 = NameAndType        #38:#36       // gender:Ljava/lang/String;

#91 = NameAndType        #39:#36       // email:Ljava/lang/String;

#92 = NameAndType        #40:#36       // telephone:Ljava/lang/String;

#93 = NameAndType        #41:#36       // introduce:Ljava/lang/String;

#94 = NameAndType        #42:#36       // activeCode:Ljava/lang/String;

#95 = NameAndType        #43:#44       // state:I

#96 = NameAndType        #46:#47       // registTime:Ljava/util/Date;

#97 = NameAndType        #45:#36       // role:Ljava/lang/String;

#98 = Utf8               java/lang/StringBuilder

#99 = Utf8               User{id=

#100 = NameAndType        #117:#118     // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

#101 = NameAndType        #117:#119     // append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;

#102 = Utf8               , username=\'

#103 = NameAndType        #117:#120     // append:(C)Ljava/lang/StringBuilder;

#104 = Utf8               , password=\'

#105 = Utf8               , gender=\'

#106 = Utf8               , email=\'

#107 = Utf8               , telephone=\'

#108 = Utf8               , introduce=\'

#109 = Utf8               , activeCode=\'

#110 = Utf8               , state=

#111 = NameAndType        #117:#121     // append:(I)Ljava/lang/StringBuilder;

#112 = Utf8               , role=\'

#113 = Utf8               , registTime=

#114 = NameAndType        #83:#60       // toString:()Ljava/lang/String;

#115 = Utf8               com/bookStore/commons/beans/User

#116 = Utf8               java/lang/Object

#117 = Utf8               append

#118 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;

#119 = Utf8               (Ljava/lang/Object;)Ljava/lang/StringBuilder;

#120 = Utf8               (C)Ljava/lang/StringBuilder;

#121 = Utf8               (I)Ljava/lang/StringBuilder;

Java常量池详细说明的更多相关文章

  1. 转载:Java中的字符串常量池详细介绍

    引用自:http://blog.csdn.net/langhong8/article/details/50938041 这篇文章主要介绍了Java中的字符串常量池详细介绍,JVM为了减少字符串对象的重 ...

  2. java常量池中基本数据类型包装类的小陷阱

    想必大部分学过java的人都应该做过这种题目: public class Test { public static void main(String[] args) { //第一个字符串 String ...

  3. 触摸java常量池

    java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下. 理论 小菜先拙劣的表达一下jvm虚拟内存分布:      程序计数器是jvm执行程序的 ...

  4. 【转载】Java常量池

    本篇随笔为转载,原贴地址:Java常量池理解与总结. (其实Java的常量池有点像C++中的存储字符串常量的常量存储区). 一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法 ...

  5. java常量池概念

    在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...

  6. java常量池理解

    String类两种不同的创建方式 String s1 = "zheng"; //第一种创建方式 String s2 = new String("junxiang" ...

  7. java虚拟机学习-触摸java常量池(13-1)

    java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深 ...

  8. java常量池概念 (转)

    在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...

  9. 浅析Java常量池

    Java常量池 Java常量池其实分为两种:静态常量池和运行时常量池 1.静态常量池 所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类. ...

随机推荐

  1. 史上最全opencv源代码解读,opencv源代码具体解读文件夹

    本博原创,如有转载请注明本博网址http://blog.csdn.net/ding977921830/article/details/46799043. opencv源代码主要是基于adaboost算 ...

  2. 被AppStore拒绝理由(一)

    July 8, 2015 at 7:06 AM 发件人 Apple 17.1 - Apps cannot transmit data about a user without obtaining th ...

  3. android自带的处理Bitmap out Memory 的处理,我仅仅是改变了些写法成为自己用的东西

    每天上万次的启动载入证明这个载入是不错的; 第三方的载入框架非常多,推荐使用成熟框架,比方大家都知道的ImageLoad等, 这里的仅仅供学习; 我也曾在一个菜谱的项目里写过载入手机相冊图片的,只是当 ...

  4. 安卓Recovery模式该怎么用?【转】

    本文转载自:http://android.baike.com/article-109914.html 安卓系统出了名的刷机刷机再刷机,说起刷机就不能不谈Recovery模式,这项刷机过程中最重要的一到 ...

  5. WinForm c# 备份 还原 数据库(Yc那些事儿 转)

    Yc那些事儿 我愿意 为了我的幸福 奋斗终生     2008-11-17 18:04 WinForm c# 备份 还原 数据库 其实是个非常简单的问题,一个Form,一个Button,一个OpenF ...

  6. FreeWheel基于Go的实践经验漫谈——GC是大坑(关键业务场景不用),web框架尚未统一,和c++性能相比难说

    摘自:http://www.infoq.com/cn/news/2017/06/freewheel-experience-on-go Go语言是FreeWheel公司目前主要力推的一个方向,在其看来, ...

  7. bzoj 3029 守卫者的挑战 —— 概率DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3029 设 f[i][j][k] 表示第 i 次挑战,已经成功 j 次,剩余容量为 k 的概率 ...

  8. E20170813-ts

    explicitly  adv. 明白地,明确地;

  9. 洛谷P2916 [USACO08NOV]为母牛欢呼(最小生成树)

    P2916 [USACO08NOV]为母牛欢呼Cheering up the C… 题目描述 Farmer John has grown so lazy that he no longer wants ...

  10. ROS-节点-Topic

    前言:本部分主要介绍ros一些基础功能的使用,包括创建和编译工作空间.功能包.节点以及话题. 第一种方式:使用roboware studio软件操作 1.1 创建工作空间 回车然后点击保存. 1.2 ...