Someone ask me "Do you Know the use of Strings intern() in java ?"
I was confused because I heard of it but never had the opportunity to use it. So I googled it and found something interesting.
As per meaning/method summary given in JAVA API Docs :
intern()
Returns a canonical representation for the string object.
So actually what it do??
A pool of String initially empty, is maintained privately by String class.
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.
An example is given below :
public class InternExample {
public static void main(String[] args)
{
// Create three strings in three different ways.
String s1 = "Intern Example";
String s2 = new StringBuffer("Intern").append(" Example").toString();
String s3 = s2.intern();
//Compare strings using == & equals
System.out.println("s1 == s2? " + (s1 == s2)+" --"+s1.equals(s2));
System.out.println("s1 == s3? " + (s1 == s3)+" --"+s1.equals(s3));
}
}
In the above example the object references are compared as well as the value of String objects.
Output is :
s1 == s2? false --true
s1 == s3? true --true