答:String s =“abc“会创建1个或者0个对象,而String s = new String(“abc“)会创建1个或者2个对象。
对于String s =“abc“,如果字符串常量池中已经存在值为“abc”的字符串对象,那么变量s会指向已存在的对象;否则会在字符串常量池中新创建一个字符串对象,并将它赋值给变量s。
对于String s = new String(“abc“),不管字符串常量池中是否存在值为“abc”的字符串对象,它都会在堆中创建一个字符串对象。如果常量池中没有则创建一个字符串对象,如果有则不创建。