java final作用

final关键字的作用

1、被final修饰的类不可以被继承

2、被final修饰的方法不可以被重写

3、被final修饰的变量不可以被改变

重点的是第三句,被final修饰的变量不可以被改变,是变量的引用不可以改变?还是变量里面的内容不可以改变?还是两者都不可以被改变?举例:
public class FinalTest {
    private String name;
    
	public FinalTest() {
		super();
	}
	public FinalTest(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public static void main(String[] args) {
		final FinalTest fTest1 = new FinalTest("zhangsan");
		final FinalTest fTest2 = new FinalTest("lisi");
		System.out.println(fTest1.getName());
		fTest1.setName("aaaaaa");
		System.out.println(fTest1.getName());
		fTest1 = fTest2;

	}
}

24行报The final local variable fTest1 cannot be assigned. It must be blank and not using a compound assignment。结合21-24行可知, 被final修饰不可变的是变量的引用,而不是变量引用指向的内容,引用指向的内容是可以改变的

猜你喜欢

转载自xu-nuo.iteye.com/blog/2393187
今日推荐