Assignments within sub-expressions are hard to spot and therefore make the code less readable. It is also a common mistake to write = when == was meant. Ideally, expressions should not have side-effects.

The following code:

System.out.println(i = 42);  // Non-Compliant

should be refactored into:

System.out.println(i == 42); // Compliant

or:

i = 42;
System.out.println(i);       // Compliant