最终变量只能显式初始化一次。声明为final的引用变量永远不能重新分配为引用其他对象。
但是,可以更改对象内的数据。因此,可以更改对象的状态,但不能更改引用。数组也是一个对象,它由一个引用变量引用,如果将其设置为final则不能重新分配。让我们看示例以进一步说明。
public class Tester {
public static void main(String []args) {
final int[] arr = {1,2,3};
//We can modify the final object's properties
arr[1] = 4;
for(int i = 0;i < arr.length ; i++) {
System.out.println(arr[i]);
}
}
}输出结果
1 4 3
现在尝试更改引用变量。编译器将在编译过程中引发错误。
public class Tester {
public static void main(String []args) {
final int[] arr = {1,2,3};
int[] arr2 = {4,5,6};
//We cannot modify the final refernce
arr = arr2;
for(int i = 0;i < arr.length ; i++) {
System.out.println(arr[i]);
}
}
}输出结果
Tester.java:6: error: cannot assign a value to final variable arr arr = arr2; ^ 1 error