金木难平 2022-06-28 17:28 采纳率: 85.7%
浏览 33
已结题

初始化问题 怎么解释 求具体

img


可以给我解释一下为什么f1没有被初始化反而是后者被初始化了呢?百思不得其解呀!

  • 写回答

4条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2022-06-28 18:01
    关注

    f1没有赋值
    f2赋值了

    当程序主动使用某个类时,如果这个类还未被加载到内存中,则系统会通过三个步骤对类进行初始化:
    1、类的加载:将类的Class文件加载到内存中,并为其生成Java.lang.class对象(此过程由类加载器完成)
    2、类的链接:将Java类的二进制数据合并到jvm运行状态中(jre)
    2.1、验证:确保类符合JVM规范,保证安全性
    2.2、准备:为类变量分配内存和初始化值
    2.3、解析:JVM常量池中的符号引用(常量名)直接替换成直接引用(地址)
    3、类的初始化:JVM对类进行初始化
    执行类构造器方法(这个方法是由编译期自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的(类构造器是构造类信息的,不是构造该类对象的构造器))
    当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化。
    JVM会保证一个类的()方法在多线程环境中被正确加锁和同步。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 创建了问题 6月28日

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号