示例代码
分析输出结果:
1、创建两个 CallFieldDemo实例,但其属性demo3和demo2却输出一次,从而判断demo3和demo2只被初始化一次(因为是static变量,所有的实例共享同一个static变量,不论是private还是public)
2、从demo1、demo2、demo3、demo4输出结果的顺序看,demo3、demo2要优先于demo4和demo1被初始化(因为demo3和demo2是静态变量)
3、从 demo1、demo4输出结果的顺序看,demo4优先于demo1被初始化(因为它们同性一个类型--非静态变量)
总结:
1、同种类型的变量(静态或非静态),按照所在类中的位置依次被初始化(demo3与demo2可见);
2、静态变量优先于非静态变量被初始化(demo3/2与demo4/1可见);
3、变量的初始化要优先于构造器及函数(CallFieldDemo(5)和 print(7)可见);
本文详细解析了Java中类实例化与初始化的顺序,包括静态变量和非静态变量的初始化顺序,以及实例化过程中的调用顺序。通过示例代码分析,展示了Java类初始化的过程,并解释了输出结果的含义。
194

被折叠的 条评论
为什么被折叠?



