【发布时间】:2014-05-29 11:53:56
【问题描述】:
下面的代码在java中创建了多少个String对象: 如果字符串池中没有包含相同值的字符串对象。 (我读到somewhere 因为我们将参数作为“Hello”传递,这是一个字符串文字,它还将在字符串池上创建另一个对象作为“Hello”。)
String s="Hello";
【问题讨论】:
标签: java string string-pool
下面的代码在java中创建了多少个String对象: 如果字符串池中没有包含相同值的字符串对象。 (我读到somewhere 因为我们将参数作为“Hello”传递,这是一个字符串文字,它还将在字符串池上创建另一个对象作为“Hello”。)
String s="Hello";
【问题讨论】:
标签: java string string-pool
如果在字符串池之前插入,则不创建对象,而是将值插入字符串池中
【讨论】:
字符串常量池中只会创建一个对象。背后的原因是在我们创建对象时,我们没有使用任何“new”关键字。
【讨论】:
您需要区分加载和传递类时加载到字符串池的文字(这是您的情况)和通过实际解析/读取/构造某些内容来创建字符串对象的情况。
后一种情况当然在程序中更常发生,它总是会生成一个新的 String 对象(即使字符串值本身已经在字符串池中)。
另见Will the String passed from outside the java application be saved in String pool?
【讨论】:
如果字符串池中不存在“Hello”,则创建一个字符串对象(文字也是对象)。
【讨论】: