Java programming — Type compatibility in assignments inside boolean expressions: class Equals { public static void main(String [] args) { int x = 100; double y = 100.1; boolean b = (x = y); // Line 7 System.out.println(b); } }

Difficulty: Easy

Correct Answer: Compilation fails

Explanation:

Introduction / Context:This tests Java's strict type system for assignments and the difference between assignment (=) and comparison (==) within expressions.

Given Data / Assumptions:

  • x is an int; y is a double.
  • The code attempts to assign y to x within a boolean context.

Concept / Approach:In Java, assigning a double to an int without an explicit cast is a compile-time error (possible lossy conversion). Also, (x = y) would have type int (the left-hand type) if it were legal, which is not boolean.

Step-by-Step Solution:

Check type compatibility: x = y requires narrowing conversion from double to int; without a cast, it fails to compile.Even with an explicit cast, the expression would not be boolean and still could not be assigned to boolean b without comparison.

Verification / Alternative check:Replace with boolean b = (x == y); or with a cast and comparison to observe correct usage.

Why Other Options Are Wrong:They assume the code runs and produces true/false or an exception; the compiler prevents execution.

Common Pitfalls:Accidentally using = instead of ==, and forgetting Java does not allow implicit narrowing conversions from double to int.

Final Answer:Compilation fails

More Questions from Operators and Assignments

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion