java基础之final/static/static final
一、final
1.final修饰变量(常量)
final修饰的成员变量表示常量,一旦给定初值既无法改变
2.final方法
final修饰方法,表示该方法不能被子类重写
好处:比非final方法要快,因为在编译时已经静态绑定了,不需要在运行时在动态绑定。
3.final类
final修饰类,表示该类不能被继承,因此该类的所有方法也不能被重写
4.final参数
final修饰函数参数时,表示该参数可以被调用,但是不能被修改其值
二、static
static一般表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块
1.static变量
先讲一个概念:被static修饰的变量称静态变量或类变量;没有被static修饰的变量称之为实例变量
当JVM加载类后,通过类名直接访问静态变量,类的所有实例共享一个静态变量,换个方式讲就是JVM只为静态变量分配一次内存,在加载类的过程中完成;而对于实例变量,每创建一个实例变量都会分配一个内存
2.static方法
静态方法只能访问所属类的静态成员变量和方法
3.static代码块
静态代码块:类中独立于类成员,JVM加载类的时候按照其先后顺序执行,无需实例化
三、static final
1.static final 变量
属于类的变量且只能赋值一次
2.static final方法
属于类的方法且不能被重写
3.static final内部类
属于外部类,且不能被继承
Just Do Yourself!