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. 安装Office Web Apps Server 2013 – KB2592525安装失败

    在Windows Server 2008 R2上安装 office web apps Server 的其中一个先决条件是 安装KB2592525. 但由于服务器已经打了SP1及其它大部分的patch, ...

  2. CockroachDB——类似spanner的开源版,底层使用rocksdb存储,mvcc,支持事务,raft一致性,licence是CockroachDB Community License Agreement

    摘自:https://github.com/cockroachdb/cockroach/blob/master/docs/design.md CockroachDB is a distributed ...

  3. md5的用处

    MD5保存摘要及指纹信息 md5的用处: 1.保存用户密码2.校验数据的完整性

  4. hdu3511-Prison Break

    纪念一下人生中第一道扫描线算法的题.....其实不是严格上的第一道...第一次遇到的那个至今没过..... 题目链接: http://acm.hdu.edu.cn/showproblem.php?pi ...

  5. go之结构体

    一.关于结构体 简述 1.go 语言的切片可以存储同一类型的数据,但是结构体可以为不同项定义不同的数据类型 2.结构体是有一系列具有相同类型或不同类型的数据构成的数据集合 3.因为go 没有类似于类的 ...

  6. HTML+CSS+JS总结

    ==================HTML(超文本标记语言)========== <!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告 ...

  7. 【WPF】使用 XAML 的 Trigger 系统实现三态按钮

    利用 WPF 的 Trigger 系统,也可以很简单的只使用xmal实现三态按钮.在Window或UserControl的资源中声明按钮的style并加入触发功能.使用的时候直接在button里复写s ...

  8. 基于bootstarp的Dailog

    oaoDailog开发帮助 1.         帮助文档关键字 boostrap模态框oaoDailog 2.         使用场景 当网页上点击某个按钮需要给予用户提示确认,用户点击确认按钮才 ...

  9. 前端Canvas思维导图笔记

    看不清的朋友右键保存或者新窗口打开哦!喜欢我可以关注我,还有更多前端思维导图笔记

  10. 大白话理解箭头函数this

    var obj1={ num:4, fn:function(){ num:5; var f=() => { num:6; console.log(this.num); //4 外层非箭头函数包裹 ...