先说答案,一个或两个
我们可以把String str=new String(“xyz”);拆成以下两步
String str1="xyz";
String str=new String("xyz");
System.out.println(str1==str);//false
/*
第一步,现在常量池中寻找是否有"xyz"这个字符串,若是有直接指向该地址,若是没有则在堆中新建一个,新建完成之后,将其存入到常量池中.
第二步,在堆中新建一个对象,该对象内容为 字符串"xyz".
*/
综上,若是原常量池有"xyz"字符串则直接指向,若是没有则新建,所以答案是一个或两个