java常量池技术

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

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

类和接口的全限定名;

字段的名称和描述符;

方法的名称和描述符。

Constant pool:

#1 = Methodref#32.#86 // java/lang/Object."":()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."":()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

#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 // "":()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常量池在哪里_Java常量池详细说明相关推荐

  1. java 常量池是什么_Java常量池理解与总结

    一.相关概念 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Class文件中的常量池 在C ...

  2. java常量池的理解_Java常量池的大概理解

    转载自:http://www.cnblogs.com/iyangyuan/p/4631696.html 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转 ...

  3. java常量池与地址_Java常量池

    一.相关知识 1.何为常量 第一种常量:是一个值,我们将这个值本身称为常量.比如: 整型常量:1024 实型常量:1.024 字符常量:'g' 'c' 'w' 字符串常量:"gcw" ...

  4. jvm中方法区和常量池详解_Java常量池(静态常量池与运行时常量池)

    1.什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Java中的常量池,实际上分为两种形态: ...

  5. java set和get原理_Java线程池的实现原理和使用

    为什么用线程池 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类.实现Runnable接口.使用Calla ...

  6. java 对象池 博客_Java对象池技术的原理及其实现的小结

    一起学习 Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 T2 T3.其中T1表示对象的创建时间,T2表示对象的 ...

  7. java 线程池的理解_JAVA线程池原理的理解

    线程池原理基础理解: 线程池初始化规定个数的线程,然后这些线程一直运行,并且监控线程队列,只要线程队列被添加进线程,那么线程池不断从队列中取出线程运行.直到队列中的线程为空.实例代码如下: packa ...

  8. java线程池的应用_Java线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  9. java常量的命名规则_java常量命名规则

    java常量命名规则 Java常量命名规则如下: 规则一. 所有单词的字母都是大写,如果有多个单词,那么使用下划线链接即可. 如:public static final int AGE_OF_PERS ...

  10. java数据库连接池简单讲解_Java数据库连接池原理机制的详细讲解

    1.根本概念及原理 由上面的剖析能够看出,疑问的本源就在于对数据库衔接资源的低效办理.咱们晓得,关于共享资源,有一个很闻名的描绘方法:资源池 (Resource Pool).该方法正是为了处置资源的频 ...

最新文章

  1. SELinux与强制访问控制系统应用
  2. ECMAScript 6 模板字面量的常见用法
  3. 集合啦,NLP数据增强技术!超全资源汇总
  4. 用GrabCut进行前景检测(对书中代码进行改进)Python
  5. ca开头的车是什么牌子_动车与高铁的区别是什么?很少人知道!让我来告诉你吧...
  6. 字符串(AC自动机(fail tree))
  7. 深度学习中反向传播算法简单推导笔记
  8. 攻击者利用7号信令(SS7)中的漏洞从德国银行偷取钱财
  9. 如何通过 SSH 连接到 Docker 容器
  10. html5理财计算,理财收益怎么算(一般理财产品的收益计算方法)
  11. 代码随想录第十七天LeetCode 110、257、404
  12. Scrum团队: I-型人 vs T- 型人
  13. 计算机图形学第一次上机——中点线算法和中点圆算法
  14. Golang Http RoundTrip解析
  15. linux三剑客试题,Linux三剑客(grep、sed、awk)详解
  16. 解决百度网盘上传请求中或上传慢的方法
  17. 广州蝶梦网络科技有限公司的互联网意义
  18. 驾驶员模拟考试系统mysql_2021驾驶员理论在线模拟考试系统
  19. 布尔代数定律_布尔代数的公理和定律
  20. kotlin杂谈系列六

热门文章

  1. IDEA如何执行Maven命令总结
  2. 区块链分享ppt,区块链ppt,区块链入门ppt
  3. 智伴机器人传销_智伴机器人是传销吗?
  4. win7常见问题汇总
  5. JavaScript代码实现冒泡排序
  6. darknet + yolo3 训练自己的数据集
  7. 采用 KMP 算法编程实现病毒感染检测算法
  8. 推送环境搭建基于开源MPush
  9. OSEK network management
  10. 群晖NAS系统DSM入门