String s = new String("xyz");共创建了几个String Object? 答案是两个。 s只是一个引用类型的变量,但是通过new关键字在堆上开辟了空间,此空间存放的对象被s所引用。 而"xyz"本身就是一个匿名的String对象,一出现即在堆里面开辟了空间并存放在此空间中。 这句代码等同于String s = new String("xyz") 等同于String s = new String();s="xyz";,所以共创建了两个String Object。 而对于String s="xyz",像这样不通过new关键字,堆上只创建了一个String对象。