String class of Java API has a native method, intern(). This method is used for internalizing Java String. It's a process of creating a String pool where String objects with equal values are stored only once.
Method signature:
public native String intern()
Straight from Java Doc
So all strings except g in above case are interned.
Method signature:
public native String intern()
Straight from Java Doc
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.
public static void main(String[] args){Ouptput : s == d : true; s == f : true; s == g : false; s.equals(f) : true; s.equals(g) : true
String s = "abc";
String d = "abc".intern();
String f = new String("abc").intern();
String g = new String("abc");
System.out.format(" s == d : %b", (s==d));
System.out.format("; s == f : %b", (s==f));
System.out.format("; s == g : %b", (s==g));
System.out.format("; s.equals(f) : %b", s.equals(f));
System.out.format("; s.equals(g) : %b", s.equals(g));
}
So all strings except g in above case are interned.
Related Post : Changes to intern() method in Java 7
No comments:
Post a Comment