初始化程序块

时间:2013-06-21 17:19:14

标签: java

System.out.println()语句总是被执行吗?假设我有

class c2
{
{
 System.out.println("initializer");
}
public static void main(String a[])
{
System.out.println("main");
 c2 ob1=new c2();
}
}

那么为什么还会打印“初始化程序”语句。是构造函数语句吗?

4 个答案:

答案 0 :(得分:2)

是的,它会打印出来:

main
initializer

一旦调用c2的构造函数,就会调用初始值设定项。类c2的默认构造函数隐式看起来像:

c2() {
  {
    System.out.println("initializer");
  }
}

请参阅JLS了解12.4.2. Detailed Initialization Procedure

答案 1 :(得分:1)

是的,它会的。如果创建类的实例(c2 ob1=new c2();),则默认构造函数将执行该命令。该程序还将输出" main",因为在main方法中调用一个新命令。

答案 2 :(得分:0)

这是初始化实例成员阻止

的示例

创建c2对象时,括号中的sysout命令也将被执行。 您可以添加这样的初始化代码,只要它包含在块中即可。

请参阅:http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

你为什么要用它?

  

Java编译器将初始化程序块复制到每个构造函数中。   因此,这种方法可用于共享一段代码   多个构造函数。

答案 3 :(得分:-1)

是的,但最好将这些代码放在一个方法中,在本例中是c2构造函数。