1. 程式人生 > 其它 >Java中關於數學運算

Java中關於數學運算

Java中關於數學運算

  1. Java中浮點數除以 0 產生的結果
public static void main(String[] args) {
    var i = 15.0;
    var x = i/0;
    System.out.println(getType(x));
    System.out.println(x);
}
private static String getType(Object o) {
    return o.getClass().getName();
}

輸出結果

java.lang.Double
Infinity


  1. Java中 int 型別運算結果超出最大值
public static void main(String[] args) {
    var i = 1000000000;
    System.out.println(3 * i);
}

對於上面這個程式,控制檯輸出的結果是:-1294967296。結果顯然是錯誤的

數學運算子只是悄悄地返回錯誤的結果而不做任何提醒。


Java中,當用一個運算子連線兩個值時,先要將兩個運算元轉換為同一型別,然後再進行操作。
如果兩個運算元中有一個是double型別,另一個運算元就會被轉換為double型別
否則,如果其中一個是float型別,另一個運算元就會被轉換為float型別
否則,如果其中一個是long型別,另一個運算元就會被轉換為long型別
否則,兩個運算元都會被轉換為int型別。

要注意,兩個byte型別的數相加,其結果是一個int型別,而不是一個byte型別。


  1. 強制型別轉換通過截斷小數部分將浮點值轉換為整型。

  1. >><<分別表示右移運算子和左移運算子,>>>表示無符號右移運算子,

>>>會用0填充高位,這與>>不同,它會用符號位填充高位,不存在<<<操作符。

移位運算子的右運算元要完成模32運算(除非左運算數是long型別,這種情況下右運算元要模64)。例如:1<<35等同於1<<3


  1. 同一個級別的運算子按照從左向右的次序進行計算(右結合運算子除外)


參考資料:

[1] Cay S.Horstmann 著,林琪 蘇鈺涵等譯.Java核心技術 卷1(原書第11版).北京:機械工業出版社,2020:37-44.

[2] 百度百科.移位運算子.https://baike.baidu.com/item/移位運算子