Win a copy of Design for the Mind this week in the Design forum!

# Jiris, Mock 1, Q17

Cathy Song
Ranch Hand
Posts: 270

Output:
true
false
true
true
Can someone explain line 1, 3 please? Thanks.

Thomas Paul
mister krabs
Ranch Hand
Posts: 13974
Originally posted by Cathy Song:
Can someone explain line 1, 3 please? Thanks.
The byte and short are promoted to an int, made positive and compared to zero.
I would have thought that line 2 would have confused you more than line 1 and 3.

Line 2 is false because of this rule of the abs method:
Note that if the argument is equal to the value of Long.MIN_VALUE, the most negative representable long value, the result is that same value, which is negative.

Cathy Song
Ranch Hand
Posts: 270
Hi Thomas,
I knew about the rule regarding Long/Integer. I thought the same applied to Byte/Short.
Thanks.

Jose Botella
Ranch Hand
Posts: 2120
An easy way to remember this is:
Integer.MIN_VALUE is 80 00 00 00
Without having looked at the code source I suspect that Math.abs calls ~ on the int or long argument ad then adds 1.
~80 00 00 00 = 7F FF FF FF
7F FF FF FF + 1 = 80 00 00 00