Java中Math.abs(Integer.MIN_VALUE)的值是其本身!
如下面的程式碼:
public class Test
{
private static final int N = 3;
public static void main(String[] args)
{
for(int i=Integer.MIN_VALUE; i<Integer.MIN_VALUE+5; i++)
System.out.println(Math.abs(i)%N);
}
}
輸出結果為:
-2
1
0
2
1
我們知道,對一個正整數進行取餘操作,其結果是一個非負整數。而對一個負整數進行絕對值運算,其結果是一個正整數。那這裡為什麼會出現出現一個負數呢?
如下面的程式碼:
public class Test
{
public static void main(String[] args)
{
for(int i=Integer.MIN_VALUE; i<Integer.MIN_VALUE+5; i++)
System.out.println(Math.abs(i));
}
}
輸出結果為:
-2147483648
2147483647
2147483646
2147483645
2147483644
也就是說,Math.abs(Integer.MIN_VALUE)的值還是其本身。通過查閱Java的API文件,我們看到對abs(int a)運算,“如果引數等於 Integer.MIN_VALUE
的值(即能夠表示的最小負 int
值),那麼結果與該值相同且為負。”所以會有這樣的結果。
這樣也就出現了一個問題,即上面的取餘操作不是很合適的。下面的程式碼展示了一個真正的取餘運算。
public class Test
{
private static final int N = 3;
public static void main(String[] args)
{
int result = 0;
for(int i=Integer.MIN_VALUE; i<Integer.MIN_VALUE+5; i++)
{
result = Math.abs(i) % N;
System.out.println(result < 0 ? (result + N) : result);
}
}
}
輸出結果為:
1
1
0
2
1
相關文章
- 為什麼Math.abs(Integr.MIN_VALUE)==Integer.MIN_VALUE
- 創業本身沒有價值創業
- 呼叫了這麼久的JS方法是長在物件、類、值本身還是原型鏈上?JS物件原型
- JavaScript Math.abs()JavaScript
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- Java中讀取配置檔案中的內容,並將其賦值給靜態變數的方法Java賦值變數
- Linux UID是什麼?其數值範圍有哪些?LinuxUI
- Python中/與//的區別是什麼?其如何使用?Python
- Java - 是值傳遞還是引用傳遞Java
- 陣列未被賦值時其值為多少?陣列賦值
- python OpenCV中的閾值是什麼PythonOpenCV
- java中傳值方式的個人理解Java
- Linux中Kdump是什麼?其作用有哪些?Linux
- 解惑4:java是值傳遞還是引用傳遞Java
- 自己對Java中if變數賦值的理解Java變數賦值
- Java是值傳遞還是引用傳遞,又是怎麼體現的Java
- React Ref 其實是這樣的React
- 小遊戲3.0時代,應迴歸到遊戲價值本身遊戲
- vue 中this.$emit()的返回值是什麼?VueMIT
- Python中find函式是什麼?其作用有哪些?Python函式
- java 中/**是什麼Java
- 淺析Java中的雜湊值HashCode的作用及用法Java
- Python 數值中的下劃線是怎麼回事?Python
- DDD中實體與值物件是幹什麼的物件
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- C++中“非常量引用的初始值必須是左值”的處理方法C++
- 2021-2-17:Java HashMap 的中 key 的雜湊值是如何計算的,為何這麼計算?JavaHashMap
- Java中equals和==比的是什麼Java
- UML已死?其實是敏捷惹的禍?敏捷
- Java 物件的雜湊值是每次 hashCode() 方法呼叫重計算麼?Java物件
- 用畫小狗的方法來解釋Java中的值傳遞Java
- java中RMI是什麼Java
- java中@Inherited是什麼?Java
- java中@Retention是什麼?Java
- 計算int變數中攸多少bit的值是1變數
- 為什麼說阿里巴巴本身是雲上資料中臺的最佳實踐阿里
- 輸出符合範圍內的水仙花數:一個三位數,它的各位數字的立方和等於其本身
- jmeter 壓測時,tps 和 RT 週期性的波動,是 jmeter 本身的問題嗎?JMeter
- Teradata宣佈退出中國 GBase 8a是其替換的不二之選