当前位置: 首页 > 面试题库 >

Java中的字符串池是什么?

潘佐
2023-03-14
问题内容

我对Java中的StringPool感到困惑。我在阅读Java中的String一章时遇到了这个问题。用外行的术语,请帮助我了解StringPool的实际作用。


问题答案:

打印true(即使我们不使用equals方法:比较字符串的正确方法)

    String s = "a" + "bc";
    String t = "ab" + "c";
    System.out.println(s == t);

当编译器优化你的字符串文字时,它会看到两者s和t具有相同的值,因此你只需要一个字符串对象。这是安全的,因为StringJava中是不可变的。
结果,两者s和都t指向同一个对象,节省了一些内存。

名称“字符串池”的想法是,所有已经定义的字符串都存储在某个“池”中,并且在创建新的String对象编译器之前检查是否已经定义了这样的字符串。



 类似资料:
  • 本文向大家介绍Java中的字符串常量池是什么?,包括了Java中的字符串常量池是什么?的使用技巧和注意事项,需要的朋友参考一下 当您将字符串存储为 JVM会直接在一个单独的内存块(称为String常量池)中创建具有给定值的String对象。 每当我们尝试创建另一个String作为 JVM会验证String常量池中是否存在具有相同值的String对象,如果不是,JVM会创建新对象而不是创建新对象,而

  • 用例: 以字符串列表的形式从s3获取所有剪辑URL。然后将列表剪辑提交给summary。 问题 1) 字符串池中的字符串何时将被垃圾收集 2)有没有办法清洁琴弦 3)使用弱引用有帮助吗 引用了此链接,但仍不清楚java何时会对字符串进行垃圾收集

  • 当使用文字创建字符串时,它会存储在池中。但当使用new运算符创建字符串对象时,它会将对象存储在堆中。 但是,堆中的对象只是一个指向存储在池中的文本的指针,还是一个存储在堆中的简单字符串对象,符合GC的条件?

  • 问题内容: 我很好奇,为什么字符串可以在不调用创建,作为API提到它是的 那么我们怎么能使用而不是呢? 这篇文章阐明了利用运营商和缺乏 ,并说这是由于被文字 拘留 或由文字池拍摄的,因此是不可变的。 在看到诸如 第一次 真正发生了什么? 是否像这样替换它,其中创建了一个对象并将其添加到 String文字池 ,因此随后的调用(例如从池中进行)? 这是底层机制的运作方式吗?如果是这样,那么是 Stri

  • 本文向大家介绍Java 中的字符串常量池详解,包括了Java 中的字符串常量池详解的使用技巧和注意事项,需要的朋友参考一下 Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使

  • 问题内容: 字符串池是什么意思?以下声明之间有什么区别: JVM存储这两个字符串之间有什么区别吗? 问题答案: 字符串池是JVM对字符串实习概念的特定实现: 在计算机科学中,字符串保留是一种仅存储每个不同的字符串值的一个副本的方法,该值必须是不变的。内部字符串使某些字符串处理任务更加节省时间或空间,但代价是在创建或嵌入字符串时需要更多时间。不同的值存储在字符串内部存储池中。 基本上,字符串内部存储