您的位置:首页 > 其它

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、在堆栈中创建一个对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  String字符串