Java中的字符串常量池是什么?

当您将字符串存储为

String str1 = "Hello";

JVM会直接在一个单独的内存块(称为String常量池)中创建具有给定值的String对象。

每当我们尝试创建另一个String作为

String str2 = "Hello";

JVM会验证String常量池中是否存在具有相同值的String对象,如果不是,JVM会创建新对象而不是创建新对象,而是将现有对象的引用分配给新变量。

当我们将String存储为

String str = new String("Hello");

使用new关键字,将创建具有给定值的新对象,而与String常量池的内容无关。