签名没有java_java – 没有任何方法签名的代码块

我有一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值