问答详情
源自:8-6 Java 中的构造方法

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

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

  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:

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

提问者:Antique 2017-08-27 16:37

个回答

  • qq_C_184
    2017-08-27 16:49:17

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