6.4.3 fina修饰基本类型变量和引用类型变量的区别
final修饰基本类型变量时 基本类型变量不可变
当使用final
修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变,
final修饰引用类型变量时 引用变量不可指向其他对象
但对于引用类型变量而言,它保存的仅仅是一个引用, final
只保证这个引用类型变量所引用的地址不会改变,即要一直引用同一个对象,但这个对象完全可以发生改变。
虽然引用变量不可指向其他对象 但对象的值可以改变
使用final
修饰的引用类型变量不能被重新赋值,但可以改变引用类型变量所引用的对象的内容。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| 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 this.age; } } public class FinalReferenceTest { public static void main(String[] args) { final int[] iArr = {5, 6, 12, 9}; System.out.println(Arrays.toString(iArr));
Arrays.sort(iArr); System.out.println(Arrays.toString(iArr));
iArr[2] = -8; System.out.println(Arrays.toString(iArr));
final Person p = new Person(45);
p.setAge(23); System.out.println(p.getAge());
} }
|