1. 静态变量
静态变量就是用static 修饰的成员变量,也称为类变量。该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。未用static 修饰的成员变量称为实例变量。
在定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据。只有通过new 关键字创建该类的实例对象后,系统才会为每个对象分配空间,存储各自的数据。有时候,开发人员会希望某些特定的数据在内存中只有一份,而且能够被一个类的所有实例对象所共享。例如某个学校所有学生共享同一个学校名称,此时完全不必在每个学生对象所占用的内存空间中都定义一个变量来表示学校名称,而可以在对象以外的空间定义一个表示学校名称的变量,让所有对象来共享。具体内存中的分配情况如图4.5 所示。
图4.5 成员变量在内存中的分配情况
在一个Java 类中,可以使用static 关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用“类名.变量名”或者“对象名.变量名”的形式来访问。static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。
定义语法:
访问修饰符 static 数据类型变量名;
【例4.24】接下来通过一个案例来描述静态变量,如文件4-24 所示。
文件4-24 Example24.java
执行结果
注意:static 关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。
如:
2. 静态方法
在实际开发时,开发人员有时会希望在不创建对象的情况下就可以调用某个方法,换句话说,也就是使该方法不必和对象绑在一起。要实现这样的效果,只需要在类中定义的方法前加上static 关键字即可。
(1)被static 关键字修饰的方法称为静态方法。
(2)同静态变量一样,静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问。(www.xing528.com)
(3)在一个静态方法中只能访问用static 修饰的成员,原因是没有被static 修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。
【例4.25】接下来通过一个案例来学习静态方法的使用,如文件4-25 所示。
文件4-25 Example25.java
执行结果
注意:在一个静态方法中只能访问用static 修饰的成员,原因在于没有被static 修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。
使用静态方法的时候需要注意以下两点:
(1)静态方法不能直接访问非静态变量。
(2)非静态方法可以直接访问静态变量。
3. 静态代码块
在Java 类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static 关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变量进行初始化。
【例4.26】接下来通过一个案例来了解静态代码块的使用,如文件4-26 所示。
文件4-26 Example26.java
执行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。