You have mentioned the difference in the subject line.
In other words, the second statement always create a NEW String object, while the first statement may take an existing String object from the String pool.
Even worse, the second line does both. It takes a string out of the string pool (creating it if necessary) and then creates an exact copy of it. The String API also mentions this:
Initializes a newly created String object so that it represents the same sequence of characters as the argument; in other words, the newly created string is a copy of the argument string. Unless an explicit copy of original is needed, use of this constructor is unnecessary since Strings are immutable.