当前位置: 首页 > 知识库问答 >
问题:

堆内存和字符串池之间的差异[重复]

孟和怡
2023-03-14

在这一环节中,称:

String s1 = "Hello";

String s2 = new String("Hello");

s1指向字符串池的位置,s2指向堆内存的位置。

共有1个答案

胡光霁
2023-03-14

StringPool是JVM用来避免冗余生成字符串对象的区域。

这些对象可以被“回收”,这样你就可以(再)使用它们,从而避免了太多内存的“浪费”...

考虑以下示例:

String s1 = "cat";

String s2 = "cat";

String s3 = new String("cat");
 类似资料:
  • 这些声明有什么不同? 每种情况下的内存分配情况如何?

  • 除了后面使用正则表达式之外,java.lang.String的和方法有什么区别?对于简单的替换,如将替换为,有什么区别吗?

  • 我错过了什么?

  • 以下是Java中的代码: 输出:输入字符串:夫人 J=女士 错误的 为什么此代码的输出为false?

  • 我注意到以下代码在netbeans中是完全合法的: 然而eclipse对此并不满意,我必须这样初始化它: 有趣的是netbean建议不要在初始化部分指定类型参数,而是使用菱形运算符??我想知道这两种方法之间的区别。以及应该使用哪一种,这样代码就可以在不同的IDE中使用而不会有任何变化。

  • 问题内容: 在我编写的测试案例中,字符串比较似乎在SQL Server / .NET CLR之间的工作方式不同。 此C#代码: 将输出: 此SQL Server代码: 将输出: 为什么会有所不同? 问题答案: 这在此处记录。 Windows归类(例如)使用Unicode类型的归类规则。SQL排序规则没有。 这导致在两者之间对连字符的区别对待。