为什么以下代码打印错误?

时间:2015-04-16 06:04:39

标签: java

替换将创建新对象,并且将比较这两个新对象。那为什么它显示错误。

何时在字符串池中添加完全新的字符串?

if("String".replace("g", "G") == "String".replace("g", "G"))
{
    System.out.println("True");    
} else {
    System.out.println("False"); 
}

1 个答案:

答案 0 :(得分:7)

因为replace()将始终返回 new String实例。因此,对方法的2 相同的调用将返回具有相同值的2个不同实例。

    如果您想比较 ,请使用equals()代替==
  1. 如果要将字符串添加到字符串常量池中,请对两个替换值使用intern()(并且使用==:P)< / p>

    if ("String".replace("g", "G").intern() == "String".replace("g", "G").intern()) {
        System.out.println("True");
    } else {
        System.out.println("False");
    }
    

    }

  2. OP:

    true