--------------------------------------------------------------------------------
The anwsers are A,B for the following reason.
1. The
string literal "john" is interned and a single instance is maintained so the expression
"john" == "john" both refer to the same object and hence it returns true.
2. I will skip this since it is obvious
3. The third statement won't compile. You can't assign a value to a String literal
4. In the fourth case you are comparing a String object with a Button object and hence will return false.
Actually the reason it returns false is the way the equals method is usually coded. (This is a recommended practice if you are provide your own equals method for a class)
Ex:
... class String {
public boolean equals(Object o) {
if ( o == null ) {
return false;
} else if ( !(o instanceof String)) {
return false;
} else {
// do the actual value comparison
}
}
Take a look at java.lang.String to get a better idea...