第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 初始化過程

Java 初始化過程

慕妹3146593 2019-03-22 19:15:36
public class TestStaticCon {public static int a = 0;    static {            a = 10;            System.out.println("靜態(tài)代碼塊在執(zhí)行a=" + a);        }        {            a = 8;            System.out.println("非靜態(tài)代碼塊在執(zhí)行a=" + a);        }        public TestStaticCon() {          this("a在類帶參構(gòu)造方法中的值:" + a); // 調(diào)用另外一個構(gòu)造方法            System.out.println(a);            System.out.println("類無參構(gòu)造方法在執(zhí)行a=" + a);        }        public TestStaticCon(String n) {            System.out.println(n);            System.out.println(a);        }        public static void main(String[] args) {            TestStaticCon tsc  = new TestStaticCon();     } }輸出:靜態(tài)代碼塊在執(zhí)行a=10非靜態(tài)代碼塊在執(zhí)行a=8a在類帶參構(gòu)造方法中的值:1088類無參構(gòu)造方法在執(zhí)行a=8為什么第三行輸出是10??
查看完整描述

4 回答

?
當(dāng)年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

自動動手調(diào)試一下就什么都清楚了
java的初始化順序,靜態(tài)變量、靜態(tài)快、變量、初始化塊、構(gòu)造方法,如果在構(gòu)造方法中調(diào)用了重載的構(gòu)造方法,那第一次調(diào)用的構(gòu)造方法就不會進行對象變量的初始化了
java的構(gòu)造方法的重載調(diào)用只能在第一行,原因也在于此;至于為何這么設(shè)計,我也不懂
你的代碼里面,先執(zhí)行的
this("a在類帶參構(gòu)造方法中的值:" + a); // 調(diào)用另外一個構(gòu)造方法

之后又執(zhí)行的變量和初始化快
用IDE的單步調(diào)試看一下就明白了

查看完整回答
反對 回復(fù) 2019-04-28
?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

public static int a = 0;

    static {   
        a = 10;   
        System.out.println("靜態(tài)代碼塊在執(zhí)行a=" + a);   
    }

相當(dāng)于下面的代碼
public static int a;


查看完整回答
反對 回復(fù) 2019-04-28
?
POPMUISE

TA貢獻1765條經(jīng)驗 獲得超5個贊

因為你存在兩個構(gòu)造函數(shù), 當(dāng)你在執(zhí)行第一個構(gòu)造函數(shù)時, 已經(jīng)轉(zhuǎn)入另外一個構(gòu)造方法,而在這時你傳入的形參為10, 所以在第2個構(gòu)造方法中n并不是對a的引用, 況且a是int型, 本身就只是常量, 不存在地址的引用, 所以第一條輸出語句為你傳入的形參10


查看完整回答
反對 回復(fù) 2019-04-28
?
UYOU

TA貢獻1878條經(jīng)驗 獲得超4個贊

Object是所有類的超類,在java的構(gòu)造其中this或者super必須放在構(gòu)造器的第一行執(zhí)行,在沒署名的情況下,每個類的構(gòu)造方法第一行調(diào)用super(),這樣才能完成父類的初始化(同類中的構(gòu)造器必然會用一個調(diào)用到父類的構(gòu)造器),
這個過程可能是一個遞歸構(gòu)造鏈,最終回歸到Object。
這里用本類帶參的構(gòu)造方法代替了默認的super(),所以講通過this(String n)這個構(gòu)造方法來完成父類的初始化,為了調(diào)用this(String n),就需要先將它的參數(shù)裝配好,因此第三行輸出的是10.
寫出來可能更好理解
[code="java"]
public TestStaticCon(String n) { 
[color=red] super();[/color]
System.out.println(n);

System.out.println(a);

    }

希望能對你有幫助.


查看完整回答
反對 回復(fù) 2019-04-28
  • 4 回答
  • 0 關(guān)注
  • 450 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號