1. final
final 主要用在3个地方:变量、方法、类。
-
final 用在变量上
① 这个变量必须在构造对象时就初始化。
③ 如果是基本数据类型的变量,那么这个变量的值一旦初始化之后就不能修改了,相当于是一个常量了。
④ 如果是引用类型的变量,则其初始化之后,就不能修改它的引用了,不过引用上的对象本身的值还是可以修改的。 -
final 用在方法上
① 表明这个方法不能被子类重写,防止子类修改它的含义。
② private 方法会被隐式的指定为 final 。 -
final 用在类上
① 表明这个类不能被继承。
② final 类中的所有成员方法都会被隐式的指定为 final 方法。
2. static
static 主要用在 5 个地方:静态变量,静态方法,静态代码块,静态内部类,静态导包。(static 不能修饰外部类。)
-
静态变量
静态变量也称为类变量,整个类只有一个这样的变量,该类的所有实例都共享这一个静态变量,可以通过类名来直接访问静态变量(类名.静态变量名)。每个静态变量在内存中只存一份。对于非静态变量,每个对象实例都会有自己单独的一份,随着对象实例一起创建和销毁。 -
静态方法
① 静态方法是不在对象上执行的方法,比如 Math.pow(x, a); 这个调用不需要 Math 对象,或者说没有隐式参数。
② 静态方法在类加载的时候就存在了&#