Question

public static void main(String[] args)
{
    String literalstr = "ABC";
    String literalstr2 = "ABC";
    String str = new String("ABC");
    String str2 = new String("ABC"); 

if (literalstr == literalstr2)
{
     System.out.println("Literal String... I use String Pooling");
}
if (str != str2)
{
      System.out.println("Object String... I dont use String Pooling");
}
if (str.intern() == str2.intern())
{
     System.out.println("Interning ... I use String Pooling");
}
    // System.out.println(ric2);
}

What is the purpose of intern()?

Was it helpful?

Solution

Just read the Java doc, and it will tell you :

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.

All literal strings and string-valued constant expressions are interned. String literals are defined in §3.10.5 of the Java Language Specification

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top