1. 你就算不写return,生成的字节码文件也会加上一句return,下图就是Person类字节码文件反编译出来的结果:
这个return实际上就是回到你new对象的那条语句处。对象创建过程是这样的:
new运算符在堆内存中开辟空间,存放Person对象。然后去调用你指定的Person构造函数,执行完构造函数后回到new语句处。此时new出来的空间已经初始化完毕,可以提供给程序使用了,于是就把对象在堆中的地址返回给引用类型变量p。
2. 你在Person()中自己加入return,那么执行到return处就返回了。至于此时初始化是否算成功,JVM不清楚,是由程序员根据需要自己判断的。但是,在return语句后还有代码,这显然是逻辑错误,所以eclipse会将其视为编译错误。
|