目录
- 第一卷
- 第二卷
如果你想要创建一个可以在实例的外部调用的成员函数,那么你只需声明它为静态的(static?copy;,它就会正常运行。静态成员函数只能直接调用其他静态成员函数,而不能以任何方式使用this或super。你也可以把变量声明为静态的。如果你想初始化一个静态变量,你可以用static声明一个恰好在类调用时执行一次的程序块。下面的例子是一个带有一个静态成员函数,几个静态变 量,和一个静态初始块的类。
classStatic{
staticinta=3;
staticintb;
staticvoidmethod(intx){
System.out.println(\"x=\"+x);
System.out.println(\"a=\"+a);
System.out.println(\"b=\"+b);
}
static{
System.out.println(\"静态初始块\");
b=a*4;
}
publicstaticvoidmain(Stringargs[]){
method(42);
}
}
这个类被调用,所有的静态变量都被初始化,a被赋为3,然后运行static块,这将打印出一段消息,并且把b赋为a*4,即12。然后解释器调用main成员函数,它调用了成员函数method,参数x为42。这三个println语句打印了两个静态变量a、b和局部变量x。下面是运行结果:C:\>javaStatic静态初始块x=42a=3b=12一个静态成员函数可以通过它所属的类名来调用。象调用实例变量一样,你可以用点操作符通过类名来调用静态成员函数和静态变量。Java就是这样实现了全局函数和全局变量。下面的例子里,我们创建了带有一个静态成员函数和两个静态变量的类。第二个类可以通过名字直接来调用第一个类的静态成员函数和静态变量。
classstaticClass{
staticinta=42;
staticintb=99;
staticvoid
callme(){
System.out.println(\"a=\"+a);
}
}
classStaticByName{
publicstaticvoidmain(Stringargs[]){
StaticClass.callme();
System.out.println(\"b=\"+staticClass.b);
}
}
下面是运行结果:C:\>javastaticByNamea=42b=99