Useing String.intern() method,
String S2 = "S1";
String S1 = new String("S1");
will same as
String S1 = "S1";
String S2 = "S1";
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.
I am working on this if I found any thing more then I will mail u about that