public class Main
{
public static void main(String[] args) {
final String man1=\"All man are created equal:27\";
final String man2=\"All man are crea
The problem lies in this statement -
System.out.print("All man are created equal:"+man1==man2);
here a new string (say s1
) is generated with the concatenation of All man are created equal:
and man1
.
Now you have 2 references of string s1
and man1
.
Later these two string references - s1
and man2
are compared.
both references(s1
and man2
) are different and you are getting false.
Because of Operator Precedence
==
is below +
, so first it will evaluate the string concatenation (+
) and then their equality (==
)
The order will be:
+
: "All man are created equal:" + man1 => "All man are created equal:All man are created equal:27"==
: "All man are created equal:All man are created equal:27" == man2 => falseSystem.out.println(false)
Bonus use equals
to compare strings (objects)
public static void main(String[] args) {
final String man1 = "All man are created equal:28";
final String man2 = "All man are created equal:" + man1.length();
System.out.println(("All man are created equal:" + man1) == man2);
System.out.println("All man are created equal:" + (man1 == man2));
System.out.println("All man are created equal:" + man1.equals(man2));
}
Output
false
All man are created equal:false
All man are created equal:true