我的问题是什么是在字符串池中创建字符串对象以及在声明字符串时在Heap上创建字符串对象的用途是什么String a = new String("abc");
?
为什么我们在创建字符串时在堆中创建字符串String a = "abc"
.
java语言就是这样设计的.在双引号之间使用的任何内容都是编译时常量并进入字符串池.所以,在你的情况下:
String a = new String("abc");
"abc"
将被解析为编译时常量,因此将被添加到当前JVM的String常量池中.
接下来,a
将在运行时解析值,并在运行时将其添加到堆中.