Selain jawaban yang diberikan sejauh ini ...
Ada empat nilai secara total
int i = Integer.MIN_VALUE;
long i = Long.MIN_VALUE;
Integer i = Integer.valueOf(Integer.MIN_VALUE);
Long i = Long.valueOf(Long.MIN_VALUE);
Nilai yang dibungkus akan dibuka sehingga nilai tersebut juga benar untuk ekspresi ini.
Catatan: Dokumen Math.abs.
public static int abs (int a)
Mengembalikan nilai absolut dari nilai int. Jika argumen tidak negatif, argumen dikembalikan. Jika argumennya negatif, negasi argumen dikembalikan.
Perhatikan bahwa jika argumen sama dengan nilai Integer.MIN_VALUE, nilai int terwakili yang paling negatif, hasilnya adalah nilai yang sama, yaitu negatif.
dan
publik abs panjang statis (panjang a)
Mengembalikan nilai absolut dari nilai panjang. Jika argumen tidak negatif, argumen dikembalikan. Jika argumennya negatif, negasi argumen dikembalikan.
Perhatikan bahwa jika argumen sama dengan nilai Long.MIN_VALUE, nilai panjang terwakili paling negatif, hasilnya adalah nilai yang sama, yaitu negatif.
Mengejutkan bahwa Math.abs mungkin mengembalikan angka negatif. Ini terjadi karena a) tidak ada nilai positif untuk -MIN_VALUE dalam kasus ini b) menjalankan -hasil kalkulasi dalam luapan.
Yang juga menarik adalah mengapa Byte.MIN_VALUE, Short.MIN_VALUE tidak melakukan ini. Ini karena -perubahan tipe intuntuk ini dan dengan demikian tidak ada luapan.
Character.MIN_VALUE tidak bermasalah karena 0.
Float.MIN_VALUE dan Double.MIN_VALUE memiliki arti yang berbeda. Ini adalah nilai terkecil yang dapat direpresentasikan yang lebih besar dari nol. Dengan demikian mereka memiliki nilai negatif yang valid yang bukan dirinya sendiri.