但在两种特殊的情形下。一种情形是只想用一个存储区域来保存一个特定的数据——无 论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任 何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。为满足这两方面的要求,可使用 static(静态)关键字。。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一 起。所以尽管从未创建那个类的一个对象,仍能调用一个 static 方法,或访问一些 static 数据。当然,在正式使用前,由于static 方法不需要创建任何 对象,所以它们不可简单地调用其他那些成员,同时不引用一个已命名的对象,从而直接访问非 static 成员 或方法(因为非static 成员和方法必须同一个特定的对象关联到一起)。
例如,下述代码能生成一个 static 数据成员,并对其初始化:
class StaticTest {
Static int i = 47;
} 现在,尽管我们制作了两个StaticTest 对象,但它们仍然只占据StaticTest.i 的一个存储空间。这两个对 象都共享同样的i。请考察下述代码: StaticTest st1 = new StaticTest(); StaticTest st2 = new StaticTest(); 此时,无论 st1.i 还是 st2.i 都有同样的值 47,因为它们引用的是同样的内存区域。