一、static
1.static修饰变量
C的局部变量,全局变量(即外部变量)和静态变量
全局变量:JAVA中不存在全局变量这个概念
局部变量:定义在方法中,需要自己初始化,不可以被访问控制符及static修饰,可定义成final型
2.static修饰函数
注:1.static方法内部不能引用非static变量。
2.static方法不能被子类重写为非static方法。
3.父类的非static方法不能被子类重写为static方法。
4.static代码块可以用static {}来完成,在类被第一次装载时执行初始化,先于静态方法和其他方法的执行。
3.static修饰内部类
没有外部类对象时,也能够访问静态内部类。
静态内部类仅能访问外部类的静态成员和方法。
4.static修饰代码块
静态代码块与非静态代码块的不同:静态代码块只在第一次new的时候执行,而非静态代码块每一次new都要执行。
JVM加载类的时候执行顺序:静态代码块---非静态代码块---主方法
static的含义:1.静态存储方式 2.作用域仅限于本文件 3.不需要实例化就可以使用
二、final
1.final修饰变量
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final经常和static一起使用表示常量(即static final,不用实例化)。
2.final修饰方法
final方法表示不能被子类重写,但可以被继承,如果认为一个方法的功能足够完善,子类不需要改变的话,就声明为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
重写(覆盖):在子类中定义某方法与其父类有相同的名称,返回类型和参数(有继承关系)
重载:JAVA中一个类可以有多个同名方法,参数类型或个数等可以不同。(没有继承关系)
3.final修饰类
final类功能通常是完整的,它们不能被继承,没有子类,Java中有许多类是final的,譬如String, Interger以及其他包装类。