通过赋值操作改变s1:
package java_proj;
public class StringDemo5 {
public static void main(String[] args) {
//String的不可变性
//String对象一旦被创建,则不能修改,是不可变的
//所谓的修改其实是创建了新的对象,所指向的内存空间不变
String s1 = "imooc";
s1 = "hello " + s1;
//s1不再指向imooc所在的内存空间,而是指向了"hello imooc"
System.out.println("s1=" + s1);
}
}
输出:
s1=hello java
内存中是这样的:
创建一个s2,将"hello " + s1赋给s2:
package java_proj;
public class StringDemo5 {
public static void main(String[] args) {
//String的不可变性
//String对象一旦被创建,则不能修改,是不可变的
//所谓的修改其实是创建了新的对象,所指向的内存空间不变
String s1 = "imooc";
String s2 = "hello " + s1;
//s1不再指向imooc所在的内存空间,而是指向了"hello imooc"
System.out.println("s1=" + s1);
System.out.println("s2=" + s2);
}
}
输出:
s1=imooc
s2=hello imooc
可看到s1的值未改变,内存中情况如下:
使用方法的调用:
String s3 = new String("hello imooc");
System.out.println("子串:" + s3.substring(0, 5));
System.out.println("s3=" + s3);
输出:
子串:hello
s3=hello imooc
s3未改变