This question has been asked many times on StackOverflow but none of them were based on performance.
In Effective Java book it\'s given tha
The JVM maintains a pool of references to unique String objects that are literals. In your new String example you are wrapping the literals with an instance of each.
See http://www.precisejava.com/javaperf/j2se/StringAndStringBuffer.htm