Java刷題總結

2021-08-31 16:21:59 字數 1386 閱讀 8733

public class hasstatic 

}

a.程式通過編譯,輸出結果為:x=102

b.程式通過編譯,輸出結果為:x=103

c.10行不能通過編譯.因為x星私有靜態變數

d.5行不能通過編譯.因為引用了私有靜態變數

解析:同乙個類內,private變數可以訪問,所以cd錯。由於x是static的,存貯在類內,而不是物件內,所以++、–操作的是同乙個變數。

public class test   

static class a

public void setvalue(int value)

public int getvalue() catch(exception e) finally

return value;

} }

static class b extends a

public void setvalue(int value)

} }

a.11 17 34

b.22 74 74

c.6 7 7

d.22 34 17

解析:首先,super()函式指的是呼叫父類的構造方法

①new b()

執行b的建構函式,第一行是super(5);

此時執行的是a的建構函式,a的構造函式呼叫的是setvalue()方法,由於b重寫了a的這個方法,

所以!!!執行的是b的 setvalue()方法。

即傳入的引數是25=10

此時,因為super,所以呼叫的是父類的 setvalue()方法,即value=10

第一行執行完畢。

第二行是 setvalue(getvalue()-3);

b沒有getvalue()方法,故執行父類的此方法,

try返回的是value=10+1=11,儲存在臨時棧中

finally中呼叫this的方法,這個this指的是b的物件,又重寫,故就是b的 setvalue()方法

value=211=22,第乙個列印到螢幕上的數字

接下來引數 getvalue()-3=11-3=8

傳入b的 setvalue()方法

此時value=28=16

至此,new b()執行結束

②new b(). getvalue()

b沒有 getvalue(),故執行a的 getvalue()

try返回16+1=17,儲存到臨時棧中

finally呼叫b的 setvalue()方法

value=172=34,第二個列印到螢幕上面的數字

最後主函式列印返回值,也就是try儲存到臨時棧的17

答案就是:22,34,17

筆試刷題總結

今天刷了一些筆試題,以下是刷完筆試題後看到的相關知識點的解析,做個小結。1 多型主要以兩種形式,靜態多型和動態多型,靜態多型主要實現了函式過載和運算子過載。動態多型主要實現了虛函式。虛函式是動態聯編,程式在執行的過程中確定呼叫哪乙個函式。2 int s 8 定義乙個指標陣列,該陣列中每個元素是乙個指...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...