阿里巴巴开发手册为啥推荐: 若是 static 成员变量,必须考虑是否为 final ?
18. 【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字:
1. 不允许被继承的类,如:String 类。
2. 不允许修改引用的域对象,如:POJO 类的域变量。
3. 不允许被重写的方法,如:POJO 类的 setter 方法。
4. 不允许运行过程中重新赋值的局部变量。
5. 避免上下文重复使用一个变量,使用 final 描述可以强制重新定义一个变量,方便更好 地进行重构。
final
- final类不能被继承,没有子类,final类中的方法默认是final的
- final方法不能被子类的方法覆盖,但可以被继承
- final成员变量表示常量,只能被赋值一次,赋值后不能再被改变
- final不能用于修饰构造方法
- private不能被子类方法覆盖,private类型的方法默认是final类型的
static
static表全局或静态的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建