In the API Specification [http://java.sun.com/javase/6/docs/api/java/lang/String.html] it says:
Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example:
String str = "abc";
is equivalent to:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
This is clearly wrong as they are not equivalent. new String(data) will always create a new instance, whereas "abc" always refers to the same instance.
??