黑马程序员技术交流社区

标题: java中的常量池是个什么样的东西? [打印本页]

作者: 苏格拉底的弟子    时间: 2012-1-19 11:48
标题: java中的常量池是个什么样的东西?
java中的常量池是个什么样的东西?
作者: 房宝彬    时间: 2012-1-19 13:39
本帖最后由 房宝彬 于 2012-1-19 13:42 编辑

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

类和接口的全限定名;

字段的名称和描述符;

方法和名称和描述符。

在Java语言中,一切都是动态的。编译时,如果发现对其它类方法的调用或者对其它类字段的引用的话,记录进class文件中的,只能是一个文本形式的符号引用,在连接过程中,虚拟机根据这个文本信息去查找对应的方法或字段。

所以,与Java语言中的所谓“常量”不同,class文件中的“常量”内容很非富,这些常量集中在class中的一个区域存放,一个紧接着一个,这里就称为“常量池”。

常量池由多条“常量池项”组成,每一个常量池项又由两部分组成,这里分别称为“常量池项头”和“常量池项体”。


常量池也分为11种,你可以自己去百度看看吧。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2