回 帖 发 新 帖 刷新版面

主题:请问!!

public class Hello
{
 static
 {
  System.out.println("Hello,world!");
 }
}
这个程序没有main(),但是执行后会输出Hello,world!但是若将static去掉,就不会输出,请问这是为什么呢?

回复列表 (共4个回复)

沙发

好象不行吧

板凳

道理很简单:
static{ ......  }
 这是一个静态初始化器,它是在类加载时系统自动调用的,所以你编译时。系统加载该类顺便调用该初始化器,所以执行时打印出 hello world!
但紧接着系统还会提示没有静态 main()!!!!
静态初始化器和类的构造函数很类似,但构造函数是在用该类产生对象时,系统调用的

3 楼

public class Test {
    
    static {
        System.out.println("111111111");
    }
    
    Test(){
        System.out.println("222222222");
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new Test();
        System.out.println("33333333333");
    }

}

执行结果:
111111111
222222222
33333333333

4 楼

2楼正解

我来回复

您尚未登录,请登录后再回复。点此登录或注册