static关键字
在java中,定义了一个static关键字,它用来修饰类的成员,如成员变量,成员方法以及代码块等,被static修饰的的成员具备一些特殊性。
static关键字的基本作用,简而言之,一句话来描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。
静态变量
在类中,用static声明的成员变量为静态成员变量,也成为类变量。静态变量被所有实例共享,可以使用'类名.变量名'的形式来访问。类变量的生命周期和类相同,在整个应用程序执行期间都有效。
运行结果:
Student类中定义了一个静态变量schoolName,用于表示学生所在的学校,它被所有实例共享,可以直接使用Student.schoolName的方式进行调用,也可以通过Student的实例对象进行调用。
注意:static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错!!!
静态方法
有时候我们希望在不创建对象的情况下就可以调用某个方法,也就是使该方法不必和对象绑在一起。要实现这样的效果,只需要在类中定义的方法前加上static关键字即可,这种方法被称为静态方法。同静态变量一样,静态方法可以通过''类名.方法名'的方式来调用。
运行结果:
简单点来说:静态方法不需要创建对象就可以调用。
注意:在一个静态方法中只能访问用static修饰的成员,因为没有被static修饰的成员变量需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。
静态代码块
在java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块就是静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,一次静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变量进行初始化。
虚拟机首先会加载类Example,在加载类的同时就会执行该类的静态代码块,紧接着会打印main()方法。在该方法中创建了两个Person对象,但在两次实例化对象的过程中,静态代码块值执行一次,说明类在第一次使用时才会被加载,并且只会加载一次。
注意:
Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字
静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)