final:
修饰的类不能被继承,
修饰的方法不能重写(可以重载),
修饰的变量不可变,注意这里的不可变是指引用不可变,值是可变的
例如:final String a = "a"; a = "ab";//报错
final Map<String,Integer> map = new HashMap<>();
map.put("a",1);//编译通过
原因为final修饰的变量引用不可变,a指向对象String "a",该引用不能发生改变,而a = "ab"则是将a指向另一个对象String "ab",这是不允许的。
而final修饰的map调用put方法只是给内存地址加上一个键对,没有改变map指向这个对象的引用,则编译通过,但如果令map = new HashMap<>();则依然会报错,改变了引用。