属性(域):
private static int a = 1;
仅有static属性时,代表这是一个静态属性,在JVM的加载阶段会给a赋一个初始值0。只有到了初始化阶段,开始初始化静态属性时,才会给a赋值为1。
private final int a = 1;
关于final的属性其实不太好理解,但是有一个快速记忆的窍门,就是把仅带有final属性的字段就当作不带任何修饰的普通字段,就可以了。但是有区别,区别就是final只能赋值一次,后续不能再有变动。体现在实践上就是final的赋值,只能直接赋值(如上),或者在构造器赋值。
private static final int VALUE_VAR = 1;
关于static final一起用,就把这个理解为不变的常量即可。
方法:
静态方法和非静态方法区别?(优/缺点) - 知乎