1.Final的特点:final变量里存的内容不能改变;(注意:final中若是存的值, 值不变; 若是存引用, 因为引用以地址的形式存放在final中, 不变的事地址而不是对象或数组的内容)
2.Final的作用:
a) 变量:不能改变值
b) 方法:不能被重写
c) 类:不能被继承
3.Final变量的赋值
a) 成员变量(空白final(声明成员变量是没有被赋值)必须在构造方法中赋值);
b) 局部变量可以将声明和赋值分开,只能赋值一次;
c) Final参数
4.final和static的区别与联系(菜鸟易混淆):
a) final:在内存中不被共享,不可改变值
Static:在内存中被共享,可改变值(例如:public static void main(String[] args) 是整个类的类方法, 而非对象的方法);
b) static:不可用在局部变量
Final:可以用在局部变量
c) final与 Static final:
定义为static final的变量:在装载时初始化,在内存中开辟了一个恒定不变的区域;
定义为final的变量:会在重新实例化对象时被更改。
5.private与 final的关系:没什么关系。但声明为private的方法子类不能访问,也就不能 继承,所以相当于隐式地被final了。此外,当方法被定义为private final时,似乎能被 “重写”了。但事实上是因为private修饰符是该方法被隐藏,子类并不知道有这个方 法,所以所谓的“重写”只是在子类中定义了一个新的方法,和父类的同名方法没有任 何关系。