public class Test {
public static void main(String[] args) {
String data = " " ;
for (int x = '0' ; x <= '9' ; x ++) {
data += (char)x;
}
System.out.println(data);
}
}
代码里的 data += (char)x;
不是改变了data的内容吗
对象不可变的意思是,“hello”这个字符串对象被创建后不能再更改,而变量s是可以被重新赋值的;
data += (char)x;是把整形x转换为字符,然后连接到data字符串变量里面。
Java 里的 String 是一个引用, 不是基本类型;
String data = " "; 这是让 data 指向内存中的 " " 字符串;
如果我们又执行 data += '2';
这会生成一个新的字符串 " 2", 同时 data 会指向 " 2" ,
而原来的那个 " " 字符串还在内存中, 且未被修改;
如果继续执行 data += '6', 则会生成第 3 个字符串 " 26",
原来的那 2 个字符串 " " 和 " 2" 还在内存中, 并没被修改.