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. spring 计时器

    spring 计时器 可以这样: http://blog.csdn.net/u010648555/article/details/52162840 也可以使用annotation <!-- 设置 ...

  2. [Algorithms] The Bayes Rule

    Prior odd: The idea is to take the odds for something happening (against it not happening), which we ...

  3. Python基础--正則表達式基本的语法以及re模块

    正则是个非常牛逼的东西,python中当然也不会缺少. 所以今天的Python就跟大家一起讨论一下python中的re模块. re模块包括对正則表達式的支持. 什么是正则: 正則表達式是能够匹配文本片 ...

  4. android在学习——activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.policy.impl.PhoneWindow)

    当我们在退出整个程序的时候偶尔会出现这种报错:Activity has leaked window com.android.internal.policy.impl.PhoneWindow 其意思大概 ...

  5. 简述RTMPDump与编译移植

    RTMPDump主页 ,RTMPDump库主要包含三部分: 1.一个基本的客户端程序 2.两个服务器程序(rtmpsrv.rtmpsuck) 3.一个支持rtmp协议的库—librtmp 下载RTMP ...

  6. Error-MySQL:2005 - Unknown MySQL server host 'localhost'(0)

    ylbtech-Error-MySQL:2005 - Unknown MySQL server host 'localhost'(0) 1.返回顶部 1. 今天在外面开navicat for mysq ...

  7. 捣鼓TinyMCE粘贴图片并上传+Flask后台

    好久没有编程了,最近需要完成一个小功能,为了方便,需要粘贴图片后上传到后台.前台编辑器用tinymce(N年前用过,我也就知道这个编辑器而已.这次使用下来感觉文档更丰富了),后台我用的Flask.昨天 ...

  8. PCB .NET连接MySQL与Oracle DLL文分享件 MySql.Data,Oracle.ManagedDataAccess

    虽然我们C#对SQL SERVER天然的支持,但对于C#要连接MYSQL或Oracle就不同了, 需要用到第3方组件才行,本文将2个组件连接数据库代码与DLL下载地址贴出. 一.C#连接MYSQL   ...

  9. 判断ascii码是什么的函数

    function CharMode(iN){ if (iN>=48 && iN <=57) //数字 return 1; if (iN>=65 && ...

  10. A - Next Round

    Problem description "Contestant who earns a score equal to or greater than the k-th place finis ...