java常量池概述
来源:互联网 发布:give up it give it up 编辑:程序博客网 时间:2024/05/22 07:58
什么是常量
第一种:是一个值,这个值本身,我们就叫做常量
第二种:用final修饰的成员变量,值一旦给定就无法改变!
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。
常量池分类
Class文件中的常量池(静态常量池,存储在class文件中,就是一段class的代码段);
方法区中的运行时常量池(动态常量池,存储在内存中);
方法区中的字符串常量池(动态常量池,存储在内存中);
Class文件中的常量池
在class文件结构中有用于存放常量的常量池.由于常量的数量是不固定的,所以常量池的入口放置一个存储常量池容量的计数值(表示有多少个常量)。
class文件中的常量池主要用于存放两大类常量:字面量(Literal)和符号引用(Symbolic References).
字面量相当于Java语言层面常量的概念,如文本字符串,声明为final的常量值等;
符号引用则属于编译原理方面的概念,包括了如下三种类型的常量:
· 类和接口的全限定名
· 字段名称和描述符
· 方法名称和描述符
方法区中的运行时常量池
运行时常量池是方法区的一部分。每个class独有一个
CLass文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。
运行时常量池相对于CLass文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是并非预置入CLass文件中常量池的内容才能进入方法区运行时常量池,运行期间也可能将新的常量放入池中,这种特性被开发人员利用比较多的就是String类的intern()方法。
方法区中的字符串常量池
这部分也在方法区中,但与运行时常量池不是一个概念,String Pool是JVM实例全局共享的,全局只有一个.JVM规范要求进入这里的String实例叫“被驻留的interned string”,各个JVM可以有不同的实现.
双等号==的含义
基本数据类型之间应用==,比较的是他们的数值。
复合数据类型(类)之间应用==,比较的是他们在内存中的存放地址。
- java常量池概述
- JAVA概述(6)常量,关键字,进制转换
- Java语言基础(常量的概述和使用)
- Java语言基础(常量的概述和使用)
- Java语言基础常量的概述和使用
- JAVA开发之 17-常量的概述和使用
- Java语言基础——常量的概述
- Java常量池
- java常量池
- Java常量池
- java 常量池笔记
- Java常量池
- java常量池概念
- Java 常量池
- java常量池概念
- java常量池
- java堆栈常量池
- 理解java常量池
- 手机网站的几点注意
- 已经有很多博客都写过的东西,我们还要不要写?
- Word文档丢失找回之没有保存Word文档就关闭了怎么解决
- dubbo日记
- Android中自定义Dialog对话框消除边距消除黑边框和显示动画
- java常量池概述
- Cookie深度解析
- java利用Freemarker模板生成格式友好的doc或者docx文档
- 学习deepmind lab 前期准备工作
- android---实际开发中遇到的问题总结
- 手机网站点击链接触发颜色块的问题解决
- Mybatis批量操作
- Java 将String转化为Int
- C++与C#界面通讯[部分为转载,具体看附件链接]