Bem, estou estudando pra SCJP e esta me aparecendo cada curiosidade que nunca imaginava existir no JAVA…
mais uma dessas seria !!!
System.out.println(Math.abs(Integer.MIN_VALUE));
e isso
System.out.println(Math.abs(Float.MIN_VALUE));
e isso
System.out.println(Math.abs(Double.MIN_VALUE));
tentem imprimir isso !
Sera que o abs funciona pra esse caso ???
Ola…
Esse metodo e o valor absoluto!!
Tp…
o modulo na matematica |z| = z, lembra ?? qualquer valor q vc colocar no modulo a resposta vai ver positiva!! 
Não sei o motivo, talvez um bug, mas o Math.abs não funciona para Integer.MIN_VALUE e Long.MIN_VALUE.
Galera,
Na verdade o método Math.abs() não retorna o valor positivo de Integer.MIN_VALUE, pois esse número positivo não cabe dentro de um número int mais, ele explode o tamanho máximo; a mesma coisa para o Long.MIN_VALUE
Dêem uma olhada:
Integer.MIN_VALUE=-2147483648
Integer.MAX_VALUE=2147483647
É o mesmo caso que fazer -Integer.MIN_VALUE ele continua sendo
-2147483648.
[quote=“ton_sp”]Galera,
Na verdade o método Math.abs() não retorna o valor positivo de Integer.MIN_VALUE, pois esse número positivo não cabe dentro de um número int mais, ele explode o tamanho máximo; a mesma coisa para o Long.MIN_VALUE
Dêem uma olhada:
Integer.MIN_VALUE=-2147483648
Integer.MAX_VALUE=2147483647
É o mesmo caso que fazer -Integer.MIN_VALUE ele continua sendo
-2147483648.[/quote]
Exatamente isso Ton.
Como o valor extrapola os limites do tipo quando há essa mudança para positivo, ele simplesmente NÃO TROCA!!!
Mais uma das curiosidades (pra quem não sabia) que o JAVA têm.
Não chega a ser um bug não Robson …pode não ser a melhor forma… mas sinceramente, eles poderiam muito bem lançar um exceção de Runtime…
Pois é Ratinho … nem tudo que a gente aprende no primário … vale na prática …