1.static
1)static修饰属性:无论这一个类生成了多少个对象,所有这些对象共同使用为一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。如果一个成员变量时static的,那么我们可以通过 类名.成员变量名 的方式来使用它(java推荐使用这种方式,而不推荐 对象.成员变量名 的方式)。
2)static修饰方法:叫做静态方法。可以通过对象访问或类名访问,推荐使用后者。
3)子类无法重写父类的静态方法,只能隐藏(hide),调用那个方法取决于引用的类型。
4)静态方法不能覆盖或被被覆盖
2.final
1)final修饰类:当一个类被final所修饰,表示该类是一个终态类,表示这个类不能被继承。
2)final修饰方法:表示该方法是一个终态方法,即该方法不能被重写。
3)final修饰属性:表示该属性不能被改写,是一个常量。
4)对于final成员变量,一般来说有两种赋初值方式,一是在声明时就赋上初值二是声明时不赋初值,在所有构造方法里赋初值
3.静态代码块
1)静态代码块的作用是完成一些初始化工作。首先执行静态代码块,然后执行静态方法。静态代码块在类被加载的时候执行,而构造方法是在生成对象的时候执行;要想调用某个类来生成对象,首先需要将类加载到Java虚拟机上(JVM),然后由JVM加载这个类来生成这个对象
2)类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会被加载一次,所以静态代码块也只会被执行一次;而构造方法则不然,每次生成一个对象的时候都会调用类的构造方法,所以new一次就会调用构造方法一次。
3)如果继承体系中既有构造方法又有静态代码块,那么首先执行最顶层的类的静态代码块,一直执行到最底层的类的静态代码块,然后再去执行最顶层的类的构造方法,一直执行到最底层类的构造方法。注意:静态代码块只会执行一次。
4.静态方法只能访问静态成员变量,非静态方法可以访问静态或者非静态的成员变量
不能在静态方法中使用this,this表示当前对象,对象有可能不存在!