-3

What is the meaning of interned strings in context of JAVA? What is the intern() method in String class? I recently came across a code where

"test" == "test" //output- true

The argument for the output was the fact that String literals were being interned.

whizvids
  • 248
  • 2
  • 8

1 Answers1

1

Taken from http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#intern%28%29

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.

As the above suggests, this method can be used to make two strings that are the same in content, but created seperately, to be stored only once in the String pool and hence the == operator returns true.

anirudh
  • 4,116
  • 2
  • 20
  • 35