Java筆試題學習之02

2021-09-20 12:54:49 字數 766 閱讀 9733

public class testab 

public void test()

public static void main(string args)

}

輸出結果為:

-128

127對應位元組碼檔案如下:

public class testab 

public void add(byte b)

public void test()

public static void main(string args)

}

分析:

關鍵點:byte是引用型別,傳遞的是引用

首先 add方法中 b=b++ 是先賦值,再做加運算,所以b的值不變,因為加運算的結果沒有被賦值

add方法的位元組碼如下:

public void add(byte b)
可以看到 add方法中只進行了+1執行,但是並沒有賦值運算

test方法中的++a語句 對應的位元組碼如下:

a = (byte)(a + 1) 可以看到 a+1 的值 重新賦給了a

但是byte型別最大為127,+1後出現溢位,所以 a是-128

再呼叫add方法後,根據上面的分析 a的值不會變化,所以輸出a的值為-128

b的值為127,因為add方法不會改變b的值

ps:從大佬的抖音直接搬運過來,抖音號:todaystart,不妥之處,還望指正!

Java學習之筆試面試題總結

1 淺複製 淺轉殖 被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用仍然指向原來的物件。換言之,淺複製僅僅複製所考慮的物件,而不複製它所引用的物件。深複製 深轉殖 被複製物件的所有變數都含有與原來的物件相同的值,除去那些引用其他物件的變數。那些引用其他物件的變數將指向被複製過...

Java筆試題學習之18 類的載入

public class test18 public static void main string args catch classnotfoundexception e 同乙個類只存在乙個class物件,所以c1 c2 c3都相等 if c2 c1 c1 c3 else 類的靜態塊只會被執行一次...

一JAVA筆試題

題目 要求從鍵盤輸入一數字,然後中文輸出 要符合中文語法 例 12434 輸出 一萬二千四百三十四 string num 零壹貳叄肆伍陸柒捌玖 string dw 圓拾佰仟萬億 string m 30020.23 string mm null mm m.split string money mm 0...