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修饰不可变的是变量的引用,而不是变量引用指向的内容,引用指向的内容是可以改变的