El primer caso es una cadena literal , simplemente una taquigrafía, el idioma te ofrece crear una cadena. El constructor de la clase String aún recibe llamadas, solo que no explícitamente, lo que significa menos tipeo y menos desorden de código.
El segundo caso toma el objeto String ya creado por el literal y lo pasa a un constructor, que copia el contenido para crear un nuevo objeto String por separado. El literal seguirá existiendo porque los literales están internados.
Raramente hay un punto para usar el constructor String (más o menos cuando ha creado una subcadena de una cadena muy grande y desea liberar la memoria utilizada por el resto de la cadena, porque las subcadenas usan de manera predeterminada misma matriz subyacente carbón como la cadena original, sólo con un desplazamiento de longitud y diferente.
posible duplicado de [¿Cuál es la diferencia entre "texto" y la nueva cadena ("texto") en Java?] (http://stackoverflow.com/questions/3052442/what-is-the-difference-between-text-and-new-stringtext-in-java). (Una vez que comprende la diferencia entre las dos formas, es obvio por qué se prefiere la primera ... en casi todos los casos). –