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...