本帖最后由 冯纪纲 于 2012-11-12 16:16 编辑
class Demo
{
{
System.out.println("1.构造块。");//定义构造块
}
static{
System.out.println("0.静态代码块。");//定义静态代码块
}
public Demo()
{
System.out.println("2.构造方法。");//定义构造方法
}
}
{
}
class CodeDemo
{
static{
System.out.println("在main方法中定义的静态代码块。");//在main方法中定义静态代码块
}
public static void main(String[] args)
{
new Demo();//实例化对象
new Demo();//实例化对象
new Demo();//实例化对象
}
}
运行结果为:
在main方法中定义的静态代码块。
0.静态代码块。
1.构造块。
2.构造方法。
1.构造块。
2.构造方法。
1.构造块。
2.构造方法。
从程序的运行结果发现,静态代码块优先于main方法执行,而在类中定义的静态代码块优先于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。
既然静态代码块优先于mian方法执行,那么可以直接使用静态代码块而不使用main方法来打印“hello world”了,
class CodeDemo1
{
static{
System.out.println("hello world");//直接在静态块中打印信息
}
}
结果:
hello world 但是下面蹦出个NoSuchMenthodError:main 异常。有没有不加main方法的决解方案呢?
|