创建了一个变量s(不是对象),它引用对象new String("abc").其中"abc"本身也是一个对象,因为编译器为它遇到的每个字符串直接值自动创建一个String对象,例如int len = "Hello World".length(),所以说总共创建了两个String Object.
1、String s="java"; 这里产生得到一个字符串常量。系统首先会去“常量池”寻找,看是否有“java”常量存在,如果有那么就将这个常量“java”赋给s,如果没有则系统在常量池里创建“java”,并将其给s。 2、String s = new String("java"); 意思是根据常量“java”创建一个字符串的对象,如此他首先会执行1中的操作,然后根据常量“java”在堆中创建对象,并为其分配内存。