我在执行一个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);
}
}
}
答案 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