public class JRun1 {
public JRun1() {
System.out.println(" 构造函数");
}
static
{
System.out.println("static{}");}
{
System.out.println("{}");//类定义还有这么一种东西?这个算什么?
}public static void main(String[] args) {
System.out.println("main()");
new JRun1();
}
}执行结果:
static{}
main()
{}
构造函数
public JRun1() {
System.out.println(" 构造函数");
}
static
{
System.out.println("static{}");}
{
System.out.println("{}");//类定义还有这么一种东西?这个算什么?
}public static void main(String[] args) {
System.out.println("main()");
new JRun1();
}
}执行结果:
static{}
main()
{}
构造函数
:
(1)static{
}
(2){
}
int a = 3;
{System.out.println("{}");}
int b = 4;
Debug一下可以就可以知道,它们是按着顺序执行的。
同意yf040230427(枫叶), dbyang()所说
{
System.out.println("static{}");}
这个根本就不是匿名类,这叫静态程序块,目的是让JVM加载一个类时,先进行一些必须操作,就是说JVM一加载这个类,静态程序块中的代码肯定被执行。它与静态方法的区别是,如果public static doSomething(){},只要这个方法没别的程序调用,它是不被执行的.
{} 是“Instance Initializers”
这些在 Java Language Specification 里都有说明。----An instance initializer declared in a class is executed when an instance of the class is created.Any static initializers declared in a class are executed when the class is initialized and, together with any field initializers for class variables, may be used to initialize the class variables of the class.
public class JRun1 {
static
{
System.out.println("Hello");
System.exit(0);
}
}
运行结果:
Hello静态代码块是在JVM加载类的时候运行的。一般用来做初始化!
的观点
...
}
是用来做显示的STATIC变量初始化的,只初始化一次,在类被第一次装载的时候执行。