求解:java构造方法里面是空的时候,初始化对象过程是怎么样的?

java构造方法里面是空的时候,为什么能初始化对象?
空的时候是不是就是表面上我们看着是空的,实际上执行了类的语句?
如果执行了类的语句,执行了哪些类的语句?
为什么没有任何教程,没有讲解到没有内容时候的执行逻辑。

构造函数为空,在此之前还可能执行的包括(按照执行顺序)
基类的构造函数
本类的静态构造函数
初始化字段语句,比如 private int count = 1;
初始化块,比如写在类里面的 { } 的内容

很多书都有介绍,你说没有教程应该是你读书少的缘故。


构造函数除了初始化对象,还可以增加别的逻辑
比如

class MyDate
{
public int year = 1900;
public int month = 1;
public int day = 1;
private MyDate() { }
public MyDate(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
public MyDate(String datestr)
{
String arr = datestr.split("-");
year = Integer.parseInt(arr[0]);
month = Integer.parseInt(arr[1]);
day = Integer.parseInt(arr[2]);
}
}

这里每个构造函数都不能省略,初始化语句也不能省。
虽然无参数构造函数没有代码,但是它封闭了构造函数,使得不能直接创建。
String的构造函数,内部实现了转换,这个逻辑,用静态初始化块和直接初始化(无参数)都是实现不了的。

只有一种特例,构造函数和直接初始化成员可以互换,那就是成员的初始值是不依赖任何参数的,是固定的,并且构造函数只是给这些成员初始值,不需要参数。