Top

# Operators and Assignments - Pointing out the correct statements

1.

Which two are equal?

1.32/4

2.(8 >> 2) << 4>

3.2^5

4.128 >>> 2

5.2 >> 5

(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).

#### Enter details here

2.

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]

(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.

#### Enter details here

3.

Which two statements are equivalent?

1.3/2

2.3<2>

3.3*4

4.3<<2>

(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).

#### Enter details here

4.

Which two statements are equivalent?

1.16*4

2.16>>2

3.16/2^2

4.16>>>2

(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

#### Enter details here

5.

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;

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.