关于==的编程逻辑

时间:2012-01-23 21:29:16

标签: java android

我在执行一个if语句的方法时遇到这种奇怪的行为,其中两个值都为true但是它无法覆盖if语句。

以下是代码及其外观。在右上角圈出红色是className的值。

如果有人知道为什么会这样,或者可能有更好的方法,请回复或指导我使用更好的编码逻辑。

在debug className =“rwb”

public void ClassReturn(){
        String tempName = getIntent().getExtras().getString("CLASS_NAME"); 
        if(tempName == null){
            Log.i("Intent Delivery", "Intent deliver has failed.");
        }else{
        String className = tempName; // This is return back to the correct class your in
            if(className == "rwb"){
                Intent intent = new Intent(BasicOption.this, ReadWholeBook.class);
                startActivity(intent);
            }
        }
    }

Strange Coding behaviour

8 个答案:

答案 0 :(得分:14)

使用.equals()检查两个对象在逻辑上是否相等,使用==检查它们是否是同一个对象。

由于实习,java中的字符串可能会更复杂,但基本上你想使用.equals()或.equalsIgnoreCase()来检查两个字符串的内容是否相同。

答案 1 :(得分:2)

您正在使用==来比较两个字符串。请改用equals方法。

答案 2 :(得分:2)

使用className.equals("rwb")进行字符串比较,而不是==

答案 3 :(得分:2)

不要在字符串上使用==比较,使用className.equals(“anotherString”);

答案 4 :(得分:2)

在这种情况下使用String.equals()==主要用于检查对象是否是完全相同的对象。

答案 5 :(得分:2)

在Java中,您不能重载运算符,因此您正在做的是比较对象ID而不是比较String的逻辑值。切换到string.equals(other_string),它将按预期工作。

答案 6 :(得分:1)

瞄准代码,您正在使用==

比较字符串
if (className == "rub")...

你应该使用equals()代替,即(我先放“擦”因为我知道永远不会为空)

if ("rub".equals(className))...

答案 7 :(得分:1)

使用equals方法验证字符串,但你必须确定内容,所以我的推荐是使用这个:

myString.trim()等于(myString2.trim());

你也可以把字符串变成大写字母。

Saludos