<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官:如何用一段代碼證明JVM加載類是懶加載模式

          共 1444字,需瀏覽 3分鐘

           ·

          2022-05-14 10:29

          你知道的越多,不知道的就越多,業(yè)余的像一棵小草!

          你來,我們一起精進(jìn)!你不來,我和你的競(jìng)爭(zhēng)對(duì)手一起精進(jìn)!

          編輯:業(yè)余草

          jiannan.blog.csdn.net

          推薦:https://www.xttblog.com/?p=5340

          面試官提問,如何用一段代碼證明JVM加載類是懶加載模式?

          假如有一天,你要找工作,等到了面試邀請(qǐng),來到了面試公司,做完了筆試題,迎來了面試官。

          面試官的第一個(gè)問題確是:你如何用一段代碼證明在JVM加載類是懶加載模式?

          來來來,都坐下,先看看這段代碼,思考一下結(jié)果。

          public?class?SuperClass?{

          ????static?{
          ????????System.out.println("SuperClass?init");
          ????}
          ????public?static?int?value?=?10;
          }

          class?SubClass?extends?SuperClass?{
          ????static?{
          ????????System.out.println("SubClass?init");
          ????}
          }

          class?TestClass?{
          ????public?static?void?main(String[]?args)?{
          ????????System.out.println(SubClass.value);
          ????}
          }

          上述代碼,只會(huì)輸出:

          SuperClass?init
          10

          而不會(huì)輸出SubClass init,對(duì)于靜態(tài)字段,只有直接定義這個(gè)字段的類才會(huì)被初始化,因此通過其子類來引用父類中定義的靜態(tài)字段,只會(huì)觸發(fā)父類的初始化,而不會(huì)初始化子類。

          所以就能證明JVM加載類是懶加載模式,?我們?cè)賮砜纯雌渌那闆r。

          public?class?NotInitialization?{

          ????public?static?void?main(String[]?args)?{
          ????????//?SuperClass?引用上面代碼的類
          ????????SuperClass[]?superClasses?=?new?SuperClass[10];
          ????}
          }

          上面這段代碼,創(chuàng)建了一個(gè)引用類型的數(shù)組,請(qǐng)問SuperClass會(huì)被初始化么?

          “噢,這里都直接new了,肯定會(huì)被初始化呀~~”

          答案是不會(huì)、不會(huì)、不會(huì)~~

          再來看最后一段代碼,想想ConstClass中的stataic靜態(tài)代碼塊會(huì)被執(zhí)行么?

          public?class?ConstClass?{

          ????static?{
          ????????System.out.println("ConstClass?init");
          ????}

          ????public?static?final?String?HELLOWORLD?=?"hello?world";
          }

          class?ConstTest?{
          ????public?static?void?main(String[]?args)?{
          ????????System.out.println(ConstClass.HELLOWORLD);
          ????}
          }

          運(yùn)行結(jié)果也沒有輸出“ConstClass init”,這是因?yàn)殡m然在Java代碼中引用了ConstClass中的常量,但是在編譯階段,hello world 已經(jīng)被存儲(chǔ)到NotInitialization類的常量池中去了,所以這里HELLOWORLD常量的引用就指向NotIntialization類的常量池了。

          瀏覽 21
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  稀缺小u女呦品呦cB视频 | 五月天激情导航 | 男女啪啪网站 | 在线观看三级 | 欧美做爱视频在线 |