Java中String创建对象过程

字符串常量池与堆

字符串常量池是JVM内存模型里的一个区域,在1.7之前(不包括1.7)字符串常量池和其他常量池在一块放在方法区(堆外空间),在1.7之后被放在了堆,算是堆中的一个特殊区域。

String创建方式

java中String是一个特殊的对象,有两种创建方式:
方式一:

String s="abc"
这种方式会直接在字符串常量池创建对象并返回引用,此时的随想在字符串常量池中,不在堆里面。
方式二:
String s=new String("abc")
这种方式会在堆中创建对象,对象的value[]数组赋值会在字符串常量池中寻找,如果字符串常量池中有“abc”,那么value[]数组直接指向该值,如果没有,那么就在常量池中创建后指向。总之,该方式的对象还是存储在堆中的。
上面两种方式创建的对象不是同一个对象。

posted @ 2021-09-08 11:12  曾凡璐  阅读(692)  评论(0)    收藏  举报