I found this code in a book and I executed it in Netbeans:
boolean b = false;
if(b = true) {
System.out.println("true");
} else {
System.out.println("false");
}
I just don’t understand why the output of this code is true,
Can anyone enlighten me please,
Thanks.
It’s missing the double-equals. So it’s doing an assignment instead of an equality comparison (and remember, the return value of an assignment is the new value). In most cases, the fact that most types are not boolean means the result is not a boolean and so it becomes illegal for an
ifstatement, resulting in a compiler error. However, since the type here is already a boolean, the assignment results in a boolean and so the safety-check fails. Thus,b = truemeans thatbis assigned the valuetrueand this is the value that is returned and checked by theifstatement.