对于引用类型的变量而言,它保存的仅仅是一个引用,final只保证这个引用所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以改变,
public class TestFinal
{
public static void main(String[] args)
{
final int[] iArr = {5,6,12,9};
System.out.println(Arrays.toString(iArr));
iArr[2] = 4; //这个语句是合法的,对数组元素重新赋值
System.out.println(Arrays.toString(iArr));
iArr = null; //这个语句是不合法的,因为其对iArr重新赋值
}
}
由此可以看出,使用final修饰的引用类型变量不能被重新赋值,但可以改变引用类型变量所引用对象的内容。 |