结论:final 修饰对象,对象的内容可变,引用不可变。
final 应用于类、方法和变量、对象时意义是不同的,但本质是一样的,都表示不可改变。
但是修饰对象时要注意:因为对象是引用类型,存储的是地址,所以final修饰之后,指的是引用地址不可变。
案例:
final char[] chars = {'1','2','3'};//定义final修饰的char数组对象
System.out.println(chars);
System.out.println("chars数组地址" + chars.hashCode());
chars[0] = '0';
chars[2] = 'b';
System.out.println(chars);
System.out.println("chars数组地址" + chars.hashCode());
char[] chars2 = new char[3];
// chars = chars2;//尝试修改对象的引用,结果报错了
/*运行结果:
123
chars数组地址460141958
02b
chars数组地址460141958
*/
//由此可见,可以修改数组对象内容且数组的地址不会改变,而且不可以修改数组的引用