2013-01-15 70 views
0

可能重复:
How do I compare strings in Java?将char转换为字符串时会发生什么? (JAVA)

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

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"); 
    } 

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

+3

阅读[我如何在Java中比较字符串(http://stackoverflow.com/questions/513832/how-do-i-compare-strings -in-java) – jlordo

回答

5

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

如果你不明白这是明确和简单的,请阅读article

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"); 
    } 
} 
+0

承诺!这似乎不同于C++ ... – Arch1tect

1

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

嘛,你使用的是String.valueOf(char)方法,它的javadoc不说如何它的转换。但是,您看到的行为强烈表明,您每次调用该方法时所使用的JVM都将创建一个新的String对象。

但是你应该依赖这种情况。

底线是你应该总是使用equals方法来比较字符串。将字符串与==进行比较通常会给您带来错误的否定...取决于字符串是如何创建/获取的。你刚刚被那个咬伤了。学习。

参考:

相关问题