我有一个java类如下:
public class MyClass {
public MyClass() {
System.out.println("In Constuctor.");
}
{
System.out.println("Where am I?");
}
public static void main(String[] args) {
new MyClass();
}
}
上述课程的输出是:
Where am I?
In Constuctor.
关于打印的块我几乎没有问题我在哪里?
>为什么没有显示任何错误/警告?
>打印的块的含义是什么?我在哪里?
>为什么在构造函数之前执行该块?
>如果它是有效的语法,那么它的用途是什么?
解决方法:
该块称为实例初始化块.在Java中创建对象时,有一个初始化对象的命令.
>将字段设置为默认初始值(0,false,null)
>调用对象的构造函数(但是不要执行构造函数的主体)
>调用超类的构造函数
>使用初始值设定项和初始化块初始化字段
>执行构造函数的主体
有关更多详细信息,请查看here和JLS 8.6
If it’s valid syntax then what is the use of it?
用于初始化实例变量的即时初始化程序.您可以在声明匿名类时使用实例初始值设定项.
An instance initializer declared in a class is executed when an
instance of the class is created (§15.9), as specified in §8.8.7.1.
标签:java
来源: https://codeday.me/bug/20190725/1531622.html