结论: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
	*/
	//由此可见,可以修改数组对象内容且数组的地址不会改变,而且不可以修改数组的引用

发表回复