对于一个immutable类型的疑问:private+immutable类型的数据通过get获取后是否能被改变
// An highlighted block
public class test {
private String a;
String b;
private StringBuilder c=new StringBuilder();
public test() {
a="111";
b="222";
c.append("333");
}
public String getA() {
return this.a;
}
public String getB() {
return this.b;
}
public StringBuilder getC() {
return this.c;
}
}
// An highlighted block
public class testM {
public static void main(String []args) {
test a=new test();
a.b="333";
System.out.println(a.b);
String a1=a.getA();
String a2=a.getB();
StringBuilder a3=a.getC();
a1="1";
a2="2";
a3.append("333");
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a.getA());
System.out.println(a.getB());
System.out.println(a.getC());
}
}
结果:虽然外部得到了private String a的值可以被获取,但在外部改变时只是对外部的变量的指向进行了改变,a的值并未被改变。
而对于mutable的变量c,在外部改变之后,对其存储空间进行了改变,所以内部的值也被改变