In Loop for n-iterations {
// I am doing a check below
if (params.contains("test") {
}
}
将字符串test
被创建为对象n
次?
In Loop for n-iterations {
// I am doing a check below
if (params.contains("test") {
}
}
将字符串test
被创建为对象n
次?
号。"test"
是一个字符串字面,所以它进入字符串常量池并将于重用未来所有“测试”的访问。如果你做new String("test")
(创建字符串的错误方式),那么会创建字符串“测试”的几个实例 - 每个迭代一个
另外值得注意的是,任何其他输出代表“test”的String对象的方法几乎都是一定要创建其他实例。 – 2015-01-21 12:40:38
@JRichardSnape - 这取决于..例如,如果你在''test''上调用'trim()',那么同样的''test''实例将被返回。 – TheLostMind 2015-01-21 12:56:59
绝对 - 因此“几乎”确定。说实话,它有点偏离了确切的问题。它可能是一些讨厌的“陷阱”的来源,因此我的评论,但你已经回答了这个问题。 – 2015-01-21 12:59:17
编号"test"
是一个独特的对象,存储在字符串池中。因此,它甚至与您在应用程序中其他位置可能具有的任何其他"test"
字面相同。
否。会为''test“'创建一个字符串实例。实际上Java对缓存和重用'String'实例相当积极。有关进一步的讨论,请参阅:http://stackoverflow.com/questions/3801343/what-is-string-pool-in-java – aroth 2015-01-21 12:24:57