为了账号安全,请及时绑定邮箱和手机立即绑定

关于实例化过程中先后顺序问题

背景:实例化过程中(这里先不包含父类),我的理解先后顺序为:

  1. 静态代码块

  2. 初始化为默认值(int:0,boolean:false,引用类型:null)

  3. 显示声明

  4. 初始化块

  5. 构造函数中this调用的其他构造函数

  6. 主构造函数

代码

public class ConstructorTest {
    public static void main(String[] args){
        Demo d = new Demo(); //无参构造函数
    }
}

class Demo{
    private String name = ""; //instance field initialization  显示域初始化
    
    public Demo(){
    }
}

问题

根据先后顺序,name先显式初始化为"",然后再调用构造函数,查过相关资料空的构造函数的定义是:“设置为默认值”,我的理解是默认值是null。但是这里name最后的输出是"",所以问题是:空的构造函数的默认值是什么?

PS:

真是无聊的问题,但还是望解答。

正在回答

1 回答

你把它设置为静态函数,系统不会自动帮你设置为默认值

0 回复 有任何疑惑可以回复我~
#1

Antique 提问者

Class Demo里面我并没有设置静态啊
2017-08-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530694    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

关于实例化过程中先后顺序问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信