Code:-
------------------------------------------------------------------------------------------------------------------------------------------------------
public class Test21{
public static void main(String a[]){
String s1 = new String("Hai");
String s2 = "Hai";
String s3 = new String("Hai").intern();
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s2 == s3);
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------
The Answer is false false true
SO, why Answer cannot be false true false.
------------------------------------------------------------------------------------------------------------------------------------------------------
Here are the details of intern method from javadocs:-
public String intern()
Returns a canonical representation for the string object.
A pool of strings, initially empty, is maintained privately by the class String.
When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.
It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.
------------------------------------------------------------------------------------------------------------------------------------------------------