回答上一篇的问题,String
是一个final
类,不可以被继承,当我们这么定义字符串的时候。
String str1 = "abc";
这个str
变量是被保存在heap(堆)上的一个特殊区域,叫常量池。
但如果换种写法:
String str2 = new String("abc");
这样的话str
就被保存在了堆中,并且str1
和str2
是不一样的引用。原来在编译的时候,当初始化字符串时用""
这种字面量初始化的时候,JVM会默认把这个变量放到堆中的常量池中。
联想到的问题:
JVM的内存是如何分布的?
网友评论