下述4行代码组成的小程序总共创建String对象的个数为: ( )。
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
String s4 = new String("abc");
A
1
B
4
C
2
D
3
3个吧
由于字符串常量池的存在,如果字符串常量池中已经存在相同的字符串对象,则会重用该对象,不会创建新的对象。
所以1、4行是一个
String s1 = "abc";:这行代码会在字符串常量池中创建一个String对象"abc"。如果常量池中已经有相同内容的对象,则直接引用已存在的对象。
String s2 = new String("abc");:这行代码会在堆内存中创建一个新的String对象"abc",因为使用了new关键字,无论常量池中是否有相同内容的对象,都会创建一个新的对象。
String s3 = "abc";:这行代码不会创建新的对象,而是将常量池中已存在的对象引用赋值给s3。
String s4 = new String("abc");:这行代码会在堆内存中创建另一个新的String对象"abc",即使常量池中已有相同内容的对象。
所以,总共创建了3个String对象。其中s1和s3引用了常量池中的同一个对象,而s2和s4是根据new关键字在堆内存中创建的新对象。
根据参考资料的代码分析,我们可以得出以下结论:
综上所述,代码中总共创建了5个String对象。