静态变量、常量和方法

在介绍静态变量、常量和方法之前首先需要介绍static关键字,因为 由static修饰的变量、常量和方法被称作静态变量、常量和方法。

有时,在处理问题时会需要两个类在同一个内存区域共享一个数 据。例如,在球类中使用PI这个常量,可能除了本类需要这个常量之 外,在另外一个圆类中也需要使用这个常量。这时没有必要在两个类中 同时创建PI常量,因为这样系统会将这两个不在同一个类中定义的常量 分配到不同的内存空间中。为了解决这个问题,可以将这个常量设置为 静态的。PI常量在内存中被共享的布局如图所示。

PI常量在内存中被共享情况
PI常量在内存中被共享情况

被声明为static的变量、常量和方法被称为静态成员。静态成员属于 类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调 用静态成员。

语法如: 类名.静态类成员

【例】在项目中创建StaticTest类,该类中的主方法调用静态成 员并在控制台中输出。

常量、变量和方法

在例中设置了3个静态成员,分别为常量、变量和方法,然后在 method2()方法中分别调用这3个静态成员,直接使用“类名.静态成员”形 式进行调用即可。

注意:虽然静态成员也可以使用“对象.静态成员”的形式进行调用,但通 常不建议用这样的形式,因为这样容易混淆静态成员和非静态成员。

静态数据与静态方法的作用通常是为了提供共享数据或方法,如数 学计算公式等,以static声明并实现,这样当需要使用时,直接使用类名 调用这些静态成员即可。尽管使用这种方式调用静态成员比较方便,但 静态成员同样遵循着public、private和protected修饰符的约束。

【例】在项目中创建StaticTest类,该类中的主方法调用静态成 员并在控制台中输出。

读者也许会发现在Eclipse中输入上述代码后,编译器会发生错误, 这是因为method3()方法为一个静态方法,而在其方法体中调用了非静态 方法和this关键字。在Java语言中对静态方法有两点规定:

  • 在静态方法中不可以使用this关键字。
  • 在静态方法中不可以直接调用非静态方法。

注意:在Java中规定不能将方法体内的局部变量声明为static的。例如下 述代码就是错误的:

public class example {
 public void method() {
 static int i = 0; 
} 
}  

技巧如果在执行类时,希望先执行类的初始化动作,可以使用static定 义一个静态区域。例如: public class example { static {// some } }当这段代码被执行时,首先执行static块中的程序,并且只会执行 一次。

发表评论