I'm just curious. I would like to know if there is a specific reason why the expression
var &= expr
doesn't behave the same way
var = var && expr.
It looks like the expression in the first is executed regardless of the false value in var.
I am using Java 6, FYI. This code:
public class Test { protected static String getString() { return null; } public static void main(String... args) { String string = getString(); boolean test = (string != null); test = test && (string.length() > 0); System.out.println("First test passed"); test &= (string.length() > 0); System.out.println("Second test passed"); } }
Gives me:
First test passed Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:14) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
source share