Its puzzling that no one directly answered the question but most answers have a lot of upvotes.
In a nutshell, the first creates an entry in the String Pool, which can be re-used (more efficient due to above links on immutability, basically, interning), and the second creates a new String object (more costly).
Both objects live in the Heap.
The references to both will be in the thread's stack.
http://www.journaldev.com/797/what-is-java-string-pool gives a clear insight into how this is achieved