String字符串深入研究
2015-05-28 20:29
190 查看
首先引入Constant Pool常量池的概念。(String Pool也称之为字符串常量池) Constant
Pool常量池其实是存在方法区中的,和java中方法存在的内存相同。
在java编译好的class文件中,有个区域称为Constant Pool,它是一个由数组组成的表,类型为cp_info constant
pool[], 用来存储程序使用的各种常量,包括Class/String/Integer等各种基本java数据类型。
对于N 个值相同的String常量,在Constant Pool中只会创建维护一个。
关于String的几个说明:
1、String 类使用private final char value[]来实现字符串的存储
2、String类有一个特殊的创建方法,直接使用""来创建,类似字面量赋值。
如果是使用new String("")构造方法来初始化一个字符串的话,那么这个字符串引用就是指向堆栈的并没有指向Constant
Pool常量池中。
想要弄清字符串的引用关系有一点很重要:同一个引用不能指向多个字符串,先断开再指向。
String string=new String("hello world");
分析创建过程:
1、先查找常量池中有没有有hello world字符串,如果没有就在常量池中创建一个。
2、在堆栈中创建一个对象。
首先引入Constant Pool常量池的概念。(String Pool也称之为字符串常量池) Constant
Pool常量池其实是存在方法区中的,和java中方法存在的内存相同。
在java编译好的class文件中,有个区域称为Constant Pool,它是一个由数组组成的表,类型为cp_info constant
pool[], 用来存储程序使用的各种常量,包括Class/String/Integer等各种基本java数据类型。
对于N 个值相同的String常量,在Constant Pool中只会创建维护一个。
关于String的几个说明:
1、String 类使用private final char value[]来实现字符串的存储
2、String类有一个特殊的创建方法,直接使用""来创建,类似字面量赋值。
如果是使用new String("")构造方法来初始化一个字符串的话,那么这个字符串引用就是指向堆栈的并没有指向Constant
Pool常量池中。
想要弄清字符串的引用关系有一点很重要:同一个引用不能指向多个字符串,先断开再指向。
String string=new String("hello world");
分析创建过程:
1、先查找常量池中有没有有hello world字符串,如果没有就在常量池中创建一个。
2、在堆栈中创建一个对象。
相关文章推荐
- JavaScript字符串String和Array操作的有趣方法
- java中字符串String的深入浅出
- String字符串判断真假
- string字符串的Split方法 的应用
- Java -数组-String字符串
- String字符串
- 【JavaSE学习笔记】常用类介绍_01_Object,Scanner,String
- 重心座标插值(Barycentric Interpolation)
- 第十四章Annotation2015-05-29
- ARMv8 與 Linux的新手筆記
- 通过一个错误讨论仅改变内参数fx,fy对应的外参数改变
- style属性
- 字符编码【转载】
- 数据结构算法代码实现——线性表的顺序表示与实现(二)
- CodeForces 546D Soldier and Number Game
- Ubuntu目录
- menu-普通menu弹出框样式
- 三个人行
- 学习使用Shader处理纹理
- DirectX9示例程序(26)-shader