String a = "abc";String b = "abc";String c = new String("abc");

2024-12-14 11:36:24
推荐回答(3个)
回答1:

说这个要说道字符串池的问题,也就是如何声明字符串会往字符串池中添加。直接以""好方式赋值的,原来字符串池没有的会添加,有则不添加new方式赋值的,每次都添加。了解到这点我们可以看出第一个String a = "abc";创建了一个对象第二个String b = "abc";因为字符串池中已有abc所以不会新创建第三个String c=new String("abc");创建了两个。首先new了一个String对象,我们说了new每次都会添加字符串池。即使abc在字符串池中也会新创建abc字符,所以它是创建两个对象这样1+0+2=3个对象

回答2:

String a = "abc";String b = "abc";会指向同一个字符串常数(编译器会自动做到的)String c = new String("abc");则创建一个新的String实例并初始化为"abc"。

回答3:

应该是创建了5个对象 a b c 三个应该是引用对象(引用存储在栈中) “abc” 是一个对象 new "abc" 算一个对象(存储在堆中) 应该是这样 求高手评论