首先可以告诉你,输出的是b,你写的虽然不代码比较复杂,但是可以简化为如下形式
class Demo
{
public static void main(String[] args)
{
String s1 = "a";
String s1 = "b";
System.out.println(s1);
}
}
我以简化后的代码给你解释下
1.首先,"a"是一个String类型的对象,该对象的引用赋值给了String类类型的变量s1,如果此时打印s1,结果是a,这个确定无疑.
2.其次执行了s1 = "b"的操作,将"b"赋值给了String s1的引用,其实你可以理解为这个赋值操作的底层操作是return new String(b),没错,你没有看错,String每次的赋值操作都是返回了一个重新的String对象,而不是对原有String对象的改变
3.自己去百度下不可变对象和不可变对象引用的区别
4.匿了
|