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. 在shell脚本中使用函数的返回值

    #!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = "1" ] ;then return ...

  2. [React Testing] Confidently Ship Production React Apps

    We want to make sure that when we ship new code, our users can use the application. The best way we' ...

  3. Win8.1更新之后没法启动,怎样修复?

    1.问题 今天开笔记本的时候,发现电脑没法启动.屏幕显示"Recovery Your PC needs to be repaired...". 详细内容见下图: 2.解决的方法 2 ...

  4. android.os.TransactionTooLargeException

    android.os.TransactionTooLargeException 今天开发过程共遇到问题,后台要反回一些表格,不是单纯的数据.就是有一些html标签的东西.错误的思路: 我得到数据后通过 ...

  5. HDOJ 5417 Victor and Machine 水

    Victor and Machine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  6. 熊猫猪新系统測试之中的一个:Windows 10 技术预览版

    话说本猫不用windows非常多年了呀! 只是看到微软最新的Windows10还是手痒了.想安装体验一把. 于是第一时间下载,并做成usb引导安装镜像,在08年的老台式机上安装尝鲜鸟.下载ISO和安装 ...

  7. java的死锁学习

    学习java的死锁写的代码 也是看书上的然后自己敲了一个 <span style="font-size:18px;">package synchronization.j ...

  8. Linux vs Window

    目前国内Linux更多的是应用于服务器上,而桌面操作系统更多使用的是Window.主要区别如下: 比较 Windows Linux 界面 界面统一,外壳程序固定所有Windows程序菜单几乎一致,快捷 ...

  9. WingIDE4.1 破解及支持中文设置

    1.下面提供最新版本的破解方法. 先到http://wingware.com/downloads/wingide下载最新版本的IDE. 安装之前,先修改时间到一个月前. 安装 安装之后然后获取试用版的 ...

  10. Truck History(prim)

    http://poj.org/problem?id=1789 读不懂题再简单也不会做,英语是硬伤到哪都是真理,sad++. 此题就是一个最小生成树,两点之间的权值是毎两串之间的不同字母数. #incl ...