Lets talk some cases related to this.
String s1 = "java";
String s2 = "java";
String s3 = new String("java");
a) s1 and s2 are just referenced,not objects, and they are pointing to the same String in memory.
b) The "java" is interned and is a compound object: one char[] object and the String object itself. It consisting of two objects in memory.
c) s3, new String("java") produces one more object. The new String("java") does not copy the char[] of "java", it only references it internally. Here is the method signature:
public String2(String original) {
this.value = original.value;
this.hash = original.hash;
}