1.首先你肯定知道String类是不可变的.当jvm看到"a",便在串池中寻找,找不到 jvm会创建一个对象,这里创建了一个对象,然后new 是
在内存上创建string对象,并将其返回给s,又一个对象,所以一共创建了两个对象.
2.那么String s=new String("a"+"b");创建了几次对象?
当jvm 看到 "a","b"时候 各创建了一次对象,"a"+"b"又创建了一个新的串,新的对象 ,new 创建了一个对象在堆,所以一共创建四次对象.
String a="sss";
这是之前我的理解 不知道对不对 大家看看评论第二条,是另一种理解。如果我们是为了应付面试可以两者结合来说,如果自己钻研 还是动手多操作看看 ~~在不同的jdk版本可能有不同的结果
(看评论 )
3. 例子:a="bbb";
String 不是不可变对象吗 ?是怎么赋值的呢?
String 是不可变对象,当jvm看到"sss"时把引用赋给a,当 jvm看到"bbb"的时候,又创建了新的对象 ,把新的引用返回给a,而原来的"sss"还是不变的.