使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答:是引用不能变,引用的对象内容是可以变的。
public static void test1(String[] args) {
// final int a=0;
// a =1;//编译报错
// final String aa="A";
// aa="B";//编译报错
}
public static void test2(String[] args) {
// final List aaa=new ArrayList();
// aaa.add(11);//编译正常
// aaa=new ArrayList();//编译报错
}
final修饰的变量去过如果指向的直接是一个数值或者字符串的话,那么这个值一旦初始化就不允许改变(例:test1);如果指向的是一个对象的话,那么一旦实例化一个新的对象,那么这个变量就指向了这个对象的地址值,对象内的内容可以变化,但是指向的地址值不能再变化(例:test2)。