测试代码如下:- import java.util.*;
- 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 age;
- }
- }
- class TestFinal
- {
- public static void main(String[] args)
- {
- //1,定义一个基本类型
- final int num = 20;
- //num = 30; //无法为最终变量num指定值
- System.out.println("num = "+num);
-
- //2,定义一个数组
- final int[] arr = {5,6,12,9};
- System.out.println("原数组:"+Arrays.toString(arr));
- Arrays.sort(arr);
- System.out.println("排序后:"+Arrays.toString(arr));
- arr[2] = -8;
- System.out.println("修改后:"+Arrays.toString(arr));
-
- //3,第一个类类型
- final Person p = new Person(10);
- p.setAge(15);
- System.out.println("修改后的age="+p.getAge());
- }
- }
复制代码 运行结果如下:
问题:我知道对于final修饰成员变量而言,一旦有了初始值后,就不能被重新赋值了,以上第1段代码示例能够解释,
但是,如第2,3段代码所示,我声明了数组和类这2个引用类型,并且也使用final修饰,之后对数组的值和类的实例属性都进行了修改,
为什么修改成功了?不是说final修饰的变量时最终变量,代码运行时再不能重新赋值吗?请知道的亲们,赐教!
|