【final修饰符】
final修饰的成员蛮必须由程序员显式地指定初始值。
当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅是一个引用,final只保证这个引用类型所引用的地址不会改变,即一直引用同一个对象,但这个对象的值可以改变。
import java.util.Arrays;
class Person
{
private int age;
public Person()
{
}
public Person(int age)
{
this.age=age;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return this.age;
}
}
public class FinalReferenceTest
{
public static void main(String[] args)
{
//final修饰的数组变量,iArr是一个引用变量
final int[] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//对数组元素进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组元素赋值,合法
iArr[2]=-3;
System.out.println(Arrays.toString(iArr));
//下面语句对iArr重新赋值,非法
//iArr=null;
//final修饰Person变量,p是一个引用变量
final Person p=new Person(50);
//改变Person对象的age Field,合法
p.setAge(20);
System.out.println(Arrays.toString(iArr));
//下面语句对p重新赋值,非法
//p=null;
}
}