10:53-10:58 描述无法理解 - 作为这个类的初始化,是通过静态块来完成的

10:53-10:58 描述无法理解 - 作为这个类的初始化,是通过静态块来完成的

问题描述:

课程10:53-10:58

作为这个类的初始化,是通过静态块来完成的

这句话我感到很奇怪,无法理解。类的初始化不是执行类构造器<cinit>()方法么,编译器将.java文件编译成.class文件时,收集所有类的初始化代码和静态代码块的代码,收集在一起成为<cinit>()方法。而且静态代码块本身就是类的一部分,为什么类的初始化是通过自己的静态代码块完成的?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,静态代码块的执行时机是在类加载的时候。而所谓“类加载”是指第一次使用某个类的时候,对该类信息进行加载与初始化。所以静态代码块会先执行。

        而当我们执行newlnstance()方法时,会实例化对象,从而会去调用构造方法。

祝学习愉快!

  • 只能卷了 提问者 #1

    这个我理解。类加载的过程就是加载(Loading) - 验证(Verification) - 准备(Preparation) - 解析(Resolution - 初始化(Initialization),这里就是指的初始化这一步。静态代码块以及静态变量是按排列顺序执行。

    没错,案例中静态代码块是会执行,但并不能说明类的初始化通过静态代码完成的吧?没有静态代码块也能完成类的初始化吧。

    只能说类的初始化过程中,会执行静态块中的内容。

    我是这么理解的。

    2022-12-18 13:09:44
  • 好帮手慕小尤 回复 提问者 只能卷了 #2

    同学你好,同学理解正确的,此处老师只是在静态代码块中书写了提示,表示这个类初始了。

    祝学习愉快!

    2022-12-18 13:36:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师