static 、final关键字

一、static关键字

1.static可以修饰类、变量、方法、静态代码块

2.被static修饰的变量是对象公共的变量,当其中一个对象改变其值时,其它对象中该变量的值也会跟着改变

 

3.父类中被static修饰的方法不能重写,只能被继承,当父类中方法被static 修饰时,继承它的子类同名的方法必须也被static修饰

被static修饰的变量和方法可以直接被类名调用

4.static修饰静态代码块  static {}

1)静态代码块位于类中,当java编译时将从class文件加载到JAVA虚拟机时就执行了静态代码块,静态代码块的作用是完成一些初始化的工作。new 一个对象时,首先执行其父类中的静态代码块,然后再执行子类中的静态代码块,执行完静态代码块后再执行父类的构造方法,然后再执行子类的构造方法;静态代码块是在类被加载时执行的,而构造方法是在生成对象的时候执行。要想调用某个类生成对象,首先要将类加载到JAVA虚拟机中(JVM),然后JVM加载这个类生成对象。

2)类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会被加载一次,所以静态代码块也只会被执行一次。而构造方法,每生成一个对象时,执行一次。

 

5、  静态的只能访问和使用静态的,非静态的可以访问一切

    1)不能在一个静态的方法中访问一个非静态的成员变量

    2)可以在一个静态的方法中访问一个静态的成员变量

    3)可以在一个非静态的方法中访问一个非静态的成员变量

    4)可以在一个非静态的方法中访问一个静态的成员变量

6、不能在静态方法中使用this关键字

 

二、final关键字

1.final可以修饰类、变量、方法

2、final修饰的类叫做“终类”,final修饰一个引用类型时,表示该引用类型不能再指向其他对象了(不能被重新生成新的对象),但该引用所指向的对象的内容(变量或方法)可以发生变化

3、被final修饰的变量称为“常量”,声明时必须赋值,且赋值后不能被改变或重新赋值;