static
static 是 Java 中⾮常重要的关键字,static 表示的概念是 静态的 ,在 Java 中,static 主要⽤来
- 修饰变量,static 修饰的变量称为 静态变量 、也称为 类变量 ,类变量属于类所有,对于不同的类来说,static 变量只有⼀份,static 修饰的变量位于⽅法区中;static 修饰的变量能够直接通过类名.变量名 来进⾏访问,不⽤通过实例化类再进⾏使⽤。
- 修饰⽅法,static 修饰的⽅法被称为 静态⽅法 ,静态⽅法能够直接通过 类名.⽅法名 来使⽤,在静态⽅法内部不能使⽤⾮静态属性和⽅法static 可以修饰代码块,主要分为两种,⼀种直接定义在类中,使⽤ static{} ,这种被称为 静态代码块 ,⼀种是在类中定义 静态内部类 ,使⽤ static class xxx 来进⾏定义。
- static 可以⽤于静态导包,通过使⽤ import static xxx 来实现,这种⽅式⼀般不推荐使⽤
- static 可以和单例模式⼀起使⽤,通过双重检查锁来实现线程安全的单例模式。
final
final 是 Java 中的关键字,它表示的意思是 不可变的 ,在 Java 中,final 主要⽤来
修饰类,final 修饰的类不能被继承,不能被继承的意思就是不能使⽤ extends 来继承被 final 修饰的类。
- 修饰变量,final 修饰的变量不能被改写,不能被改写的意思有两种,对于基本数据类型来说,final修饰的变量,其值不能被改变,final 修饰的对象,对象的引⽤不能被改变,但是对象内部的属性可以被修改。final 修饰的变量在某种程度上起到了 不可变 的效果,所以,可以⽤来保护只读数据,尤其是在并发编程中,因为明确的不能再为 final 变量进⾏赋值,有利于减少额外的同步开销。
- 修饰⽅法,final 修饰的⽅法不能被重写。
- final 修饰符和 Java 程序性能优化没有必然联系