不一样,因为内存的分配方式不一样。 String str="i"的方式,Java 虚拟机会将其分配到常量池中,因为String是final类型的。如果常量池中有"i”,就返回"i"的地址,如果没有就创建"i",然后返回"i"的地址;String str=new String(“i”) 则会被分到堆内存中新开辟一块空间。