关于Java显示的静态初始化

2025-03-18 20:58:51
推荐回答(3个)
回答1:

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

回答2:

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);
    } 
}

回答3:

静态初始化区域。
在加载类的时候会执行。