当您将字符串存储为
String str1 = "Hello";
JVM会直接在一个单独的内存块(称为String常量池)中创建具有给定值的String对象。
每当我们尝试创建另一个String作为
String str2 = "Hello";
JVM会验证String常量池中是否存在具有相同值的String对象,如果不是,JVM会创建新对象而不是创建新对象,而是将现有对象的引用分配给新变量。
当我们将String存储为
String str = new String("Hello");
使用new关键字,将创建具有给定值的新对象,而与String常量池的内容无关。