I want to demonstrate with a few line of code that in Java, that to compare two strings (String), you have to use equals() instead of the operator ==.
Here is something I tried :
public static void main(String Args[]) {
String s1 = "Hello";
String s2 = "Hello";
if (s1 == s2)
System.out.println("same strings");
else
System.out.println("different strings");
}
I was expecting this output : different strings, because with the test s1 == s2 I’m actually comparing two references (i.e. addresses) instead of the objet’s content.
But I actually got this output : same strings !
Browsing the internet I found that some Java implementation will optimize the above code so that s1and s2 will actually reference the same string.
Well, how can I demonstrate the problem using the == operator when comparing Strings (or Objects) in Java ?
The compiler does some optimizations in your case so that
s1ands2are really the same object. You can work around that by usingThen you have two distinct objects with the same text content.