java构造方法里面是空的时候,为什么能初始化对象?
空的时候是不是就是表面上我们看着是空的,实际上执行了类的语句?
如果执行了类的语句,执行了哪些类的语句?
为什么没有任何教程,没有讲解到没有内容时候的执行逻辑。
求解:java构造方法里面是空的时候,初始化对象过程是怎么样的?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2020-02-21 11:44关注
构造函数为空,在此之前还可能执行的包括(按照执行顺序)
基类的构造函数
本类的静态构造函数
初始化字段语句,比如 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的构造函数,内部实现了转换,这个逻辑,用静态初始化块和直接初始化(无参数)都是实现不了的。只有一种特例,构造函数和直接初始化成员可以互换,那就是成员的初始值是不依赖任何参数的,是固定的,并且构造函数只是给这些成员初始值,不需要参数。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 Hyper-v虚拟机相关问题,求解答。
- ¥15 TSM320F2808PZA芯片 Bootloader
- ¥45 谷歌浏览器出现开发者工具无法显示已创建的,但您可以调试已部署的代码。 状态代码 404, net::ERR HTTP RESPONSE CODE FAILURE
- ¥15 chatgpt网页版侧边栏和模型切换点击没反应怎么办
- ¥15 如何解决蓝牙通话音频突发失真问题
- ¥15 安装opengauss数据库报错
- ¥15 【急】在线问答CNC雕刻机的电子电路与编程
- ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
- ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
- ¥15 Python pandas