我了解到,在Java中,通过new String("foo")创建字符串将创建一个新副本,而不是潜在地使用字符串池中的现有副本。--同样,我假设创建本机字符串也是完全分开分配的:std::string bar = "foo";,因为本机分配不使用堆。
很明显,Java中可以有一个变量(即。String bar = "foo";),这是对<e
String s = new String("abc");
当我们使用新关键字时,Java将在普通(非池)内存中创建一个新的字符串对象,并将引用它。此外,文字"abc“将放在池中。我很好奇,JVM在普通内存中添加了"abc“之后在字符串常量池中添加了"abc”,那么为什么它要在普通内存中创建"abc“呢?但是,它可以直接在字符串常量池中<e