interning

 

Interning is used by String only. It is the default as long as new isnt used.

 

Interning creates identical pointers to pre-existing String objects whenever possible. This is to avoid the overhead of unnecessary new object creations.

 

String s1 = A; String s2 = A; creates just one object via interning, so s1 == s2; here.

 

String s1 = A; String s2 = new String(A); creates two distinct objects, because of the new in the second statement. s1 == s2 will retun false here.

 

Specifying the intern( ) method can explicitly make the JVM look for a pre-existing object match from its String pool to use. But, absent new, all literal strings and string-valued constant expressions are interned anyway. i.e.

 

String s = YES.intern( ); is the same as String s = "YES";

 

Creating ANY identical-looking variable contents with new negates interning. None of them can have new for interning to take effect.