【问题标题】:Java String if+ contains+ loopJava 字符串 if 包含循环
【发布时间】:2015-03-19 23:15:03
【问题描述】:

伪代码:

In Loop for n-iterations {
    // I am doing a check below
    if (params.contains("test") {

    }
}

字符串test 会被创建为对象n 次吗?

【问题讨论】:

标签: java string contains


【解决方案1】:

没有。 "test" 是一个唯一的对象,存储在字符串池中。因此,它甚至与您在应用程序其他地方可能拥有的任何其他 "test" 文字都是同一个对象。

【讨论】:

    【解决方案2】:

    No.. "test" 是一个字符串 literal ,所以它会进入 String 常量池 并将在未来重用 “测试”的访问。如果你这样做new String("test")(创建字符串的错误方式),那么将创建几个字符串“test”的实例 - 每个迭代

    【讨论】:

    • 另外值得注意的是,任何其他输出代表“test”的String对象的方法几乎肯定会创建其他实例。
    • @JRichardSnape - 这取决于.. 例如,如果您在 "test" 上调用 trim(),则将返回相同的 "test" 实例。
    • 绝对 - 因此“几乎”确定。老实说,它在某种程度上偏离了确切的问题。对于某些人来说,这可能是令人讨厌的“陷阱”的根源,因此我发表了评论,但您已经回答了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2017-04-07
    • 2011-12-05
    • 2018-07-28
    相关资源
    最近更新 更多