what is the Difference between
String str=new String(\"Thamilan\");
and
String str=\"Thamilan\";
in java
The difference is that the new String creates a new object with the same value as the literal passed in:
String s = "abc";
String t = new String("abc");
System.out.println(s==t); //false
String u = "abc";
String v = "abc";
System.out.println(u==v); //true
This is because the literal are always from the internal pool.
You might want to look at the intern method - here is its description:
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