final
final的意思是最终,不可变的。是一个修饰符,可用来修饰类、类的成员以及局部变量。
final修饰类
- final修饰的类,该类不能被继承;
- 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为final;
- 被final修饰的类,final类中的成员方法都会被隐式的指定为final方法;
- 在JDK中,被设计为final类的有String、System。
final修饰的方法不能被重写
final修饰的变量叫常量,常量必须初始化,初始化之后就不能被修改
static
static是静态修饰符,一般用来修饰类中的成员。方便在没有创建对象的情况下来进行调用。
- static关键字修饰类(只能修饰内部类)
- static修饰变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。 - static修饰方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。 - static关键字修饰代码块静态代码块在类一次被载入时被执行。