-5

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

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

那为什么还要打印“initializer”语句。是任何构造函数语句吗?

4

4 回答 4

2

是的,它会打印:

main
initializer

一旦你调用了你的构造函数,你的初始化器就会被调用。你的c2类的默认构造函数c2隐式看起来像:

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

请参阅 JLS 了解12.4.2。详细的初始化程序

于 2013-06-21T17:24:04.310 回答
1

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

于 2013-06-21T17:23:11.110 回答
0

这是初始化实例成员块的示例

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

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

你为什么要使用它?

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

于 2013-06-21T17:24:09.207 回答
-1

是的,但在方法中包含该代码会更好,在这种情况下,在 c2 构造函数中。

于 2013-06-21T17:25:33.630 回答