请看我下面的代码,希望对你的理解有帮助
public static void main(String[] args) {
String str = "abcdefg";
//System.out.println(str);
//str = str.substring(0,3);
//这里的输出结果为”abcdefg“这个没有疑问吧
System.out.println(str);
//这里的输出结果为”abc“这个也没有疑问吧,这里其实会生成一个对象,不过随着代码执行完成也就消失了,你可以理解为匿名的对象
System.out.println(str.substring(0,3));
//这里的输出结果为”abcdefg“,我写这句代码是为下面做铺垫,想要告诉你的是,它还是原来的str。
System.out.println(str);
//这里的输出结果为”abc“,是因为在堆中生成了一个存储”abc“的空间,并且它把原来的str的地址给覆盖了,所以str指向的是一个新的地址
System.out.println((str=str.substring(0,3)));
//那这里输出的结果也自然是指向新地址存放的值得位置了,那么自然就是”abc“了
System.out.println(str);
}
|