日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第十四题: 以下代码的输出结果是?

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十四题: 以下代码的输出结果是? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第十四題:

以下代碼的輸出結果是?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public class B

{

??? public static B t1 = new B();

??? public static B t2 = new B();

??? {

??? ? ? System.out.println("構造塊");

??? }

??? static

??? {

??? ? ? System.out.println("靜態塊");

??? }

??? public static void main(String[] args)

??? {

??? ? ? B t = new B();

??? }

}

?

A 靜態塊 構造塊 構造塊 構造塊 B 構造塊 靜態塊 構造塊 構造塊 C 構造塊 構造塊 靜態塊 構造塊 D:構造塊 構造塊 構造塊 靜態塊

懵逼樹上懵逼果,懵逼樹下你和我

首先看到這道題,我就想著那不是先靜態代碼塊先執行嗎

話不多說,直接跑代碼

public class B{public static B t1 = new B();public static B t2 = new B();{System.out.println("構造塊");}static{System.out.println("靜態塊");}public static void main(String[] args){B t = new B();}}

運行結果

接著我們看看大家的評論


開始時JVM加載B.class,對所有的靜態成員進行聲明,t1 t2被初始化為默認值,為null,又因為t1 t2需要被顯式初始化,所以對t1進行顯式初始化,初始化代碼塊→構造函數(沒有就是調用默認的構造函數),咦!靜態代碼塊咋不初始化?因為在開始時已經對static部分進行了初始化,雖然只對static變量進行了初始化,但在初始化t1時也不會再執行static塊了,因為JVM認為這是第二次加載類B了,所以static會在t1初始化時被忽略掉,所以直接初始化非static部分,也就是構造塊部分(輸出''構造塊'')接著構造函數(無輸出)。接著對t2進行初始化過程同t1相同(輸出'構造塊'),此時就對所有的static變量都完成了初始化,接著就執行static塊部分(輸出'靜態塊'),接著執行,main方法,同樣也,new了對象,調用構造函數輸出('構造塊')

最后答案選擇C

文章僅個人理解,來在各大網站。如有不合理之處,歡迎吐槽。

閱讀目錄(置頂)(長期更新計算機領域知識)

閱讀目錄(置頂)(長期更新計算機領域知識)

閱讀目錄(置頂)(長期科技領域知識)

歌謠帶你看java面試題

總結

以上是生活随笔為你收集整理的第十四题: 以下代码的输出结果是?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。