为什么我仍然可以更改这个最终变量?
Why can I still make changes to this final variable?
如果 name
被声明为 final
,为什么我仍然可以调用 name.append
而输出是:shreya
?我以为一旦赋值就不能更改最终变量?
public class Test1 {
final static StringBuilder name = new StringBuilder("sh");
public static void main(String[] args) {
name.append("reya");
System.out.println(name);
}
}
final
表示不能更改引用,例如你不能说 name = new StringBuilder()
。它不会使引用的对象不可变。
不变性是 class 的 属性。可变类型的对象始终是可变的。
您必须开始区分变量、值(引用值和原始值)以及对象和原始值。
变量是值的容器。该值是参考值(对于对象)或原始值。
您不能使用赋值运算符将新值赋给 final
变量,一旦它用其原始值初始化。
如果 name
被声明为 final
,为什么我仍然可以调用 name.append
而输出是:shreya
?我以为一旦赋值就不能更改最终变量?
public class Test1 {
final static StringBuilder name = new StringBuilder("sh");
public static void main(String[] args) {
name.append("reya");
System.out.println(name);
}
}
final
表示不能更改引用,例如你不能说 name = new StringBuilder()
。它不会使引用的对象不可变。
不变性是 class 的 属性。可变类型的对象始终是可变的。
您必须开始区分变量、值(引用值和原始值)以及对象和原始值。
变量是值的容器。该值是参考值(对于对象)或原始值。
您不能使用赋值运算符将新值赋给 final
变量,一旦它用其原始值初始化。