static关键字与静态成员

 

Java中的static关键字加在类中的变量或方法前作为修饰符,表示静态变量或静态方法。x0a此外,还有静态代码块的用法。...



1. 静态变量和静态方法

Java中的static关键字加在类中的变量或方法前作为修饰符,表示静态变量或静态方法。与前述不加static关键字修饰的普通成员相比,普通成员是属于某个对象的,而静态成员是属于整个类的。因此,静态变量也称作类变量,静态方法也称为类方法。例如:

                           


需要说明的是:类的静态成员(包括静态方法和静态变量)都是存放在Java虚拟机的方法区中的,这个区域是随着Java虚拟机的创建而创建,Java虚拟机退出该区域才消失的,方法区中的静态成员是随着类的装载而载入的,与类的任何实例对象无关,不会被垃圾回收,所以能够直接通过类名来访问。上面程序的Java虚拟机内存分布如下图:



要始终牢记静态方法(类方法)不属于任何类的对象,因此还有如下的规定:

(1)静态方法中可以访问静态成员(静态变量和静态方法),而不可以直接访问非静态成员(成员方法和成员变量)。这是因为静态方法属于整个类,使用非静态的普通成员(成员方法和成员变量)时需指明属于类的哪个对象。因此,在静态成员中如果要访问非静态的普通成员,则要先创建对象,指明普通成员所属的对象。例如:



(2)静态方法中不能使用this。因为this是指向当前对象的,而静态方法属于整个类,在静态方法内部无法确定什么是当前对象。



2. 静态代码块

static关键字除了静态变量和静态方法两种用法之外,还有一种用法,即static块,或称静态代码块。使用static关键字后跟一对大括号包围起来若干行代码。当类被加载时,静态代码块就会执行。静态代码块只在类加载时执行一次,不会随着类的实例的创建而多次执行。一般在静态代码块中进行一些静态变量的初始化工作。如下例所示:



上面代码中第2~5行就是静态代码块,可以看到,虽然在main( )方法中实例化了两个Student对象,但该静态代码块只会执行一遍。


    关注 洛师Java教学


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册