static
- static代表静态、全局。
- static可以修饰变量、方法、代码块
- static变量:
被类的实例所共用,在类加载时被创建并进行初始化,可以修改。 - static方法:
1. 被类的实例所共用,在类加载时创建,可以直接通过类名调用;
2. main函数为static的原因:在类加载时无法创建对象,因为静态方法可以不通过对象调用,所以在类的main方法所在在类加载时就可以通过main方法入口来运行程序;
3. 静态方法中不能用this和super关键字; - static代码块:
JVM加载类时会执行静态代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
在类中独立于类成员,可以有多个。
final
- final代表最终、常量
- final可以修饰变量、方法、类
- final变量:
1. final变量就是常量(最好应当大写),一旦赋值不能改变,常量必须被赋值
2. 常量的赋值方式:初始化时赋值、构造函数中赋值 - final方法:
1. 被final修饰的方法将不能被其子类覆盖。
2. final不能用来修饰构造方法
3. 在父类中如果有常量属性,在子类中使用常量属性时是不会进行父类的类加载。
4. private类型的方法默认是final类型 - final类:
被final修饰的类将不能被继承,final类中的方法也都是final方法。
static final
- static final代表静态常量(全局常量)
- static final 变量:
1. 一旦给定值就不能修改,可以通过类名访问。
2. 如果是容器被static final修饰,容器成员可以变,但是容器自身不能变(例如已经是ArrayList,不能变为LinkedList) - static final 方法:
不可覆盖方法,可以通过类名访问。 - static final 用来干什么:
当一个变量是固定的值,并且不创建对象就想使用它,此时可以使用static final
参考:
https://blog.csdn.net/qq_38998213/article/details/81364503
https://www.cnblogs.com/EasonJim/p/7841990.html