主要讲述的是静态关键字可以修饰变量、方法以及内部类、静态块。
一、静态变量:
当一个变量被static所修饰后,这个变量就是一个静态变量,一个类中,一个static变量只会有一个内存空间,虽然有多个类的实例,
但是这些类实例中的这个static变量都是共享了一个内存空间,被类的所用对象使用,使用方法直接“类名.变量名”。
static 的变量是在类装载的时候被初始化的,也就是只要类被装载,不管是否使用了static变量,都会被初始化。
非静态变量在使用的时候需要new一个对象,通过这个对象去访问类里面的变量。
二、静态方法
与静态变量一样,也是使用static来进行修饰的,这种方法被叫做静态方法,一个静态方法只能静态方法与静态变量没有什么太大的变化,
使用方法直接就是“类名.方法”。
1.一个类的静态方法只能访问静态变量。
2.静态方法中不能定义一个静态变量,在方法内部定义的叫“局部变量”,而不是静态变量,局部变量不能加static,
包括protected, private, public这些也不能加。静态变量是定义在类中,方法体外面的。
我们经常使用的主方法就是一个静态方法。
三、静态块
在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。
由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
运行结果:
通过这段代码会发现静态代码块的执行优先于构造方法和非静态代码块的,非静态代码块优先于构造方法。
注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
四、static修饰内部类
静态关键字不仅可以修饰变量和方法,还可以修饰内部类,普通类似不被允许被static修饰的,
只有内部类才可以,被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类,