我就不墨迹了,你只需要看下面一句话,希望你看完记住

一个或者两个

1、如果常量池里面没有“abc”这个字符串,那虚拟机就会在堆内存中new出一个String对象,还会在常量池中new一个abc字符串对象;

2、如果常量池中已经有"abc"这个字符串,也就是说你在前面已经new过一个值为“abc”的字符串,那虚拟机就只会在堆内存中new一个String对象,并将常量池中“abc”的地址指向你刚刚new的String对象