0

可能重复:
如何比较 Java 中的字符串?

我正在使用 String.valueOf 将 char 转换为字符串。但是返回值似乎与同一个字母的字符串不完全相同。以下代码:

    String myString = "s";
    char myChar = 's';//both string and char are assigned as letter 's'

    String stringFromChar = String.valueOf(myChar);

    if (myString == stringFromChar) {
        out.println("equal");
    } else {
        out.println("not equal");
    }

每次打印不相等。请帮忙,谢谢!:)

4

3 回答 3

5

==比较参考值,而不是实际值。您必须使用equals来比较值。

如果您不明白,请阅读这篇文章,它清晰而简单。

于 2013-01-15T01:47:06.153 回答
2

永远不要再这样做了!!!答应我!!!=P

在比较字符串时,总是,总是,总是使用 equals 方法。见下文!

    String myString = "s";
    char myChar = 's';//both string and char are assigned as letter 's'

    String stringFromChar = String.valueOf(myChar);

    if (myString.equals(stringFromChar)) {
        System.out.println("equal");
    } else {
        System.out.println("not equal");
    }
}
于 2013-01-15T01:45:48.960 回答
1

将 char 转换为字符串时会发生什么?

好吧,您正在使用该String.valueOf(char)方法,其 javadoc 没有说明它是如何进行转换的。但是您看到的行为强烈表明您使用的 JVMString每次调用该方法时都会创建一个新对象。

但是您应该依赖于这种情况。

底线是您应该始终使用该equals方法来比较字符串。将字符串与 进行比较==通常会给您带来误报……取决于字符串的创建/获取方式。你刚刚被那个咬了。学习。

参考:

于 2013-01-15T01:50:36.447 回答