permaculture playing cards
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Math.abs() Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Math.abs()" Watch "Math.abs()" New topic


Savio Mascarenhas
Ranch Hand

Joined: Nov 29, 2000
Posts: 108
What will be the result of attempting to complie & run the following code?
public class ADirtyOne
public static void main(String args[])
(a)Causes a compilation error
(b)Causes no error and the value printed on the screen is less than zero.
(c)Causes no error and the value printed on the screen is one more than the Integer.MAX_VALUE
(d)Will throw a runtime exception due to overflow - Integer.MAX_VALUE is less in magnitude than Integer.MIN_VALUE.

The answer is (b).
Java API Quote:
"Note that if the argument is equal to the value of Integer.MIN_VALUE, the most negative representable int value, the result is that same value, which is negative."
An absolute +ve value is displayed in the case of Byte.MIN_VALUE & Short.MIN_VALUE.Why not so in the case of an int.???
Praveen Zala
Ranch Hand

Joined: Jul 02, 2000
Posts: 118
This has got to do with the signed or unsigned
primitive types..... Byte does not store the sign bit
Adrian Yan
Ranch Hand

Joined: Oct 02, 2000
Posts: 688
Reason for byte and short works because they are converted to "int" before the operation. "static int abs(int i)", it takes "int" as argument, if you pass in byte or short, they are implicitly converted to integer.
Both byte and short are signed, meaning they have sign bits. The only unsigned primitive is char.
I agree. Here's the link:
subject: Math.abs()
It's not a secret anymore!