1

我在比较字符串时遇到问题:我在 string.xml 中获得了“activation”的字符串值。当我将它与具有相同值的字符串值进行比较时,结果始终为假(在 string.xml 中激活 = 测试)

<?xml version="1.0" encoding="utf-8"?>
<resources> 
    <string name="app_name">MyNameApp</string>
    <string name="activation">test</string>
</resources>

public class CheckGenuine {     
    public static String cod;
    public static String app;

    public static Boolean chk(Context ctx) {    
        Boolean ret;
        cod = ctx.getString(R.string.activation);
        app = ctx.getString(R.string.app_name);

        if (cod == "test") {
            Toast.makeText(ctx, "True cod = " + cod, Toast.LENGTH_LONG).show();     
            ret = true;} 
        else {
            Toast.makeText(ctx, "False cod = " + cod, Toast.LENGTH_LONG).show();  
            ret = false;}

  // *** why ret is always false and Toast shows "False cod = test"   ????????????????  

        return ret;     
    }   

}
4

3 回答 3

4

您应该使用.equals()比较字符串值,而不是==运算符。本文很好地解释了差异。

于 2012-07-24T16:56:24.190 回答
1

利用if (cod.equals("test")) {

==->> 比较字符串引用(内存位置)

.equals() 比较字符串值。

于 2012-07-24T16:59:31.457 回答
0

字符串比较在Java中是通过equals()函数进行的,如果使用'==操作',则表示按2个对象本身进行比较,而不是按值进行比较。

String value = "myString"
if (value.equals("myString")) {
}
于 2019-11-12T06:03:43.257 回答