static{ cup1=new Cup(1);cup2=new Cup(2);} 这个就是java里的静态成员初始化语法。不是方法,只是给静态成员数据赋初始值。
Cup.cup1.f(99)可以看成两部分:
x = Cup.cup1 这是取出Cup类中的静态成员数据cup1,这里称之x
x.f(99) 这是调用对象x的成员函数f
static{
cup1=new Cup(1);
cup2=new Cup(2);
}
这是静态块,在类加载的时候执行的!Cup.cup1.f(99);是跟System.out.print()类似的,但是你这代码有问题啊!!!!
给你修改了下代码:
class Cup{
Cup(int marker){
System.out.print("Cup("+marker+")");
}
void f(int marker){
System.out.print("f("+marker+")");
}
}
class Cups{
static Cup cup1;
static Cup cup2;
static{
cup1=new Cup(1);
cup2=new Cup(2);
}
Cups(){
System.out.print("Cups()");
}
}
public class ExplicitStatic{
public static void main(String[] args){
System.out.print("Inside main()");
Cups.cup1.f(99);
}
}
静态初始化区域。
在加载类的时候会执行。