public class Test {
static {
System.out.println("你好啊!");
}
}
执行结果:
---------- Java ----------
你好啊!
java.lang.NoSuchMethodError: main
Exception in thread "main"
Output completed (0 sec consumed) - Normal Terminationpublic class Test {
static {
System.out.println("你好啊!");
System.exit(0);
}
}
static {
System.out.println("你好啊!");
}
}
执行结果:
---------- Java ----------
你好啊!
java.lang.NoSuchMethodError: main
Exception in thread "main"
Output completed (0 sec consumed) - Normal Terminationpublic class Test {
static {
System.out.println("你好啊!");
System.exit(0);
}
}
首先加载了静态的static的代码段的程序
优先执行
2、然后完成static初始化,如果有。
3、为对象分配内存空间
4、将分配的内存空间清零
5、初始化类字段(数据成员)。按照定义的顺序依次初始化
6、调用构造器的方法开始--->
父类的静态代码--->
子类的静态代码-->
父类的非静态代码--->
父类构造函数--->
子类非静态代码--->
子类构造函数--->完成
参考:http://www.iteye.com/topic/208187
参考:http://www.iteye.com/topic/208187
1、输出“你好啊!”是因为在开发工具中(如eclipse)执行程序时把类加载的jvm中(加载过程中就会执行system语句),然后找main方法;
2、报错是因为每个java程序都必须有一个main方法(除非借助junit4之类的组件,内部还是需要入口方法的),这个是人家当初就这么设计的,没什么好说的。
main方法是执行入口,木有main,怎么运行?求指教
静态初始化的发生是有条件的 即只有它所在的类被加载时才会发生
LZ对这方面内容有兴趣 可以看thinking in java里的 静态数据初始化
结束程序!
++
java核心技术里有讲到,一下省略.......