Described as code, the question transforms in this:
String a = "abc";
String c = new String("abc");Just a note, which is basic for all comments below – String in Java is immutable.
When we create string with new() Operator, it’s created in heap and not added into string pool while String created using literal are created in String pool itself which exists in PermGen area of heap.
Lets look some functionality differences: