【问题标题】:How may String Objects are created in java (By the following code)如何在java中创建字符串对象(通过以下代码)
【发布时间】:2014-05-29 11:53:56
【问题描述】:

下面的代码在java中创建了多少个String对象: 如果字符串池中没有包含相同值的字符串对象。 (我读到somewhere 因为我们将参数作为“Hello”传递,这是一个字符串文字,它还将在字符串池上创建另一个对象作为“Hello”。)

String s="Hello";

【问题讨论】:

标签: java string string-pool


【解决方案1】:

如果在字符串池之前插入,则不创建对象,而是将值插入字符串池中

【讨论】:

    【解决方案2】:

    字符串常量池中只会创建一个Stringliteral

    【讨论】:

      【解决方案3】:

      字符串常量池中只会创建一个对象。背后的原因是在我们创建对象时,我们没有使用任何“new”关键字。

      【讨论】:

        【解决方案4】:

        您需要区分加载和传递类时加载到字符串池的文字(这是您的情况)和通过实际解析/读取/构造某些内容来创建字符串对象的情况。

        后一种情况当然在程序中更常发生,它总是会生成一个新的 String 对象(即使字符串值本身已经在字符串池中)。

        另见Will the String passed from outside the java application be saved in String pool?

        【讨论】:

          【解决方案5】:

          如果字符串池中不存在“Hello”,则创建一个字符串对象(文字也是对象)。

          【讨论】:

          • 但它存在。在执行语句之前,编译器和类加载器将它放在那里。
          • @EJP - 我说过如果它不存在就会创建它。这意味着如果它存在,它将不会被创建和添加到字符串常量池中
          猜你喜欢
          • 2019-09-19
          • 1970-01-01
          • 2014-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-19
          相关资源
          最近更新 更多