Which two are equal?
1.32/4
2.(8 >> 2) << 4>
3.2^5
4.128 >>> 2
5.2 >> 5
Answer: B
(2) and (4) are correct. (2) and (4) both evaluate to 32. (2) is shifting bits right then left using the signed bit shifters >> and <<. (4) is shifting bits using the unsigned operator >>>, but since the beginning number is positive the sign is maintained.
(1) evaluates to 8, (3) looks like 2 to the 5th power, but ^ is the Exclusive OR operator so (3) evaluates to 7. (5) evaluates to 0 (2 >> 5 is not 2 to the 5th).
import java.awt.Button;
class CompareReference
{
public static void main(String [] args)
{
float f = 42.0f;
float [] f1 = new float[2];
float [] f2 = new float[2];
float [] f3 = f1;
long x = 42;
f1[0] = 42.0f;
}
}
which three statements are true?
1.f1 == f2
2.f1 == f3
3.f2 == f1[1]
4.x == f1[0]
5.f == f1[0]
Answer: B
(2) is correct because the reference variables f1 and f3 refer to the same array object.
(4) is correct because it is legal to compare integer and floating-point types.
(5) is correct because it is legal to compare a variable with an array element.
(3) is incorrect because f2 is an array object and f1[1] is an array element.
Which two statements are equivalent?
1.3/2
2.3<2>
3.3*4
4.3<<2>
Answer: C
(1) is wrong. 3/2 = 1 (integer arithmetic).
(2) is wrong. 3 < 2>.
(3) is correct. 3 * 4 = 12.
(4) is correct. 3 <<2>. In binary 3 is 11, now shift the bits two places to the left and we get 1100 which is 12 in binary (3*2*2).
Which two statements are equivalent?
1.16*4
2.16>>2
3.16/2^2
4.16>>>2
Answer: B
(2) is correct. 16 >> 2 = 4
(4) is correct. 16 >>> 2 = 4
(1) is wrong. 16 * 4 = 64
(3) is wrong. 16/2 ^ 2 = 10
Which of the following are legal lines of code?
1.int w = (int)888.8;
2.byte x = (byte)1000L;
3.long y = (byte)100;
4.byte z = (byte)100L;
Answer: D
Statements (1), (2), (3), and (4) are correct. (1) is correct because when a floating-point number (a double in this case) is cast to an int, it simply loses the digits after the decimal.
(2) and (4) are correct because a long can be cast into a byte. If the long is over 127, it loses its most significant (leftmost) bits.
(3) actually works, even though a cast is not necessary, because a long can store a byte.