字符串存储原理
- String表示字符串类型,属于引用数据类型,不属于基本数据类型
- 在java中随便使用双引号括起来的都是String对象
- java中规定,双引号括起来的字符串是不可变的,也就是说"abc"自出生到死亡,不可变,不能变成"abcd"
- 在JDK当中双引号括起来的字符串都是直接存储在方法区的"字符串常量池"当中的
为什么SUN公司吧字符串存储在一个字符串常量池当中呢?,因为字符串在实际的开发中使用太频繁,为了执行效率,所以把字符串放到了常量池中 - 垃圾回收器是不会回收字符串常量池中的数据的
- new出来的String对象这个"xy"是从哪里来的?
String s3 = new String(“xy”);
分析: 这是使用new 的方式创建的字符串对象,凡是双引号括起来的都在字符串常量池中有一份,new 对象的时候一定在堆内存中开辟空间 ,所以在栈中的s3存放堆中String对象的内存地址 堆中String对象存放的是字符串常量池中"xy"的内存地址