可以将新对象存储在上一个对象中

时间:2016-12-27 06:14:20

标签: java string

String s1=new String("Java");    /* 1st object created */
String s2="Tech";                /* 2nd Object */
s1+=s2;   

我在这里混淆了创建新对象还是存储在前一个对象中的结果。

创建了多少个对象

2 个答案:

答案 0 :(得分:0)

str1 += str2 

相当于执行以下操作:

str1 = new StringBuilder().append(str1).append(str2).toString();

对toString的最终调用将创建一个新对象,并且引用将由变量str1保存在第3行代码中。堆String中的早期对象(" Java")将为垃圾收集做好准备。

Java在字符串的情况下与c类似,它创建新对象而不是修改现有对象。这是因为java中的字符串是不可变的。

答案 1 :(得分:-1)

String s1=new String("Java");    /* 2 objects created as 'new' is used - s1 (holds reference to new String) and string literal "Java" */
String s2="Tech";    /* 3rd Object - "Tech", s2 just holds reference to it */
s1+=s2; /* 4th Object created, which is concatenation of s1 and s2. s1 holds reference to it.

所以创建了4个对象。