课后整理总结-10.8
课件2及相关作业的整理总结:
动手动脑问题:
1.为何此代码不能编译通过:
原因是上方创建新对象时没有参数,而下方对于构造函数的定义是有一个参数的,因此出现问题。如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。解决方法:在上方加入参数或去掉下面的参数定义。
2.TestStaticInitializeBlock.java的运行结果
由结果可知,顺序为:1>各类的静态初始化块2>类的非静态初始化块3>类的构造函数4>子类的非静态初始化块5>子类的构造函数
各类的静态初始化块首先执行,因为static初始化块是在构造函数之前执行的。执行顺序先静态再非静态。
初始化是在类加载的时候完成的,而构造方法生成对象,生成对象是在类加载完成之后完成的。因此先加载,后生成对象,故先执行初始化块。
构造方法在初始化块后执行。在执行完非静态代码块后,会立即执行其构造函数,然后执行子类的非静态代码块,然后执行子类的构造方法
课件上的实验代码:总结Java字段初始化的规律
先说结论,初始化时优先级1>类的构造函数2>类的初始化块3>在执行类成员的时候默认给出的值, 另外顺序也会影响优先级
第一处未调用,初始化块在后来赋值之前,因此输出的为100即为赋值值;
第二处调用了构造方法,因此输出的为构造方法规定的300;
顺序的影响:如果我们把初始化块的顺序颠倒,结果如下:
-byAurora
作者:冰稀饭Aurora
出处:https://www.cnblogs.com/rsy-bxf150/p/16758161.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端