if 语句,代码不起作用
if statement, Code not work
final EditText yaz = (EditText)findViewById(R.id.editText);
final Button bas = (Button)findViewById(R.id.button);
yaz.setText("500");
bas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String afd = yaz.getText().toString();
if (afd == "1000") {
yaz.setText("2000");
}
}
}
);
}
替换
if (afd == "1000")
和
if (afd.equals("1000"))
这应该有效。
想法是 ==
检查位于堆栈上的实体的值,而在 Java 中,只有基本类型和引用保存在堆栈上。对象位于堆上,要比较对象状态,您需要像 equals()
这样的运行时虚拟方法(而不是像 ==
这样的运算符)。
在 Java 中,您无法使用 ==
运算符检查 Strings
之间的相等性。此运算符检查引用类型的相等引用,并且仅检查原始类型的相等值。由于 String
是引用类型,因此失败也就不足为奇了。
要检查 Strings
(或 Objects
之间的相等性),请使用:
str1.equals(str2);
或者您的情况:
afd.equals("1000");
final EditText yaz = (EditText)findViewById(R.id.editText);
final Button bas = (Button)findViewById(R.id.button);
yaz.setText("500");
bas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String afd = yaz.getText().toString();
if (afd == "1000") {
yaz.setText("2000");
}
}
}
);
}
替换
if (afd == "1000")
和
if (afd.equals("1000"))
这应该有效。
想法是 ==
检查位于堆栈上的实体的值,而在 Java 中,只有基本类型和引用保存在堆栈上。对象位于堆上,要比较对象状态,您需要像 equals()
这样的运行时虚拟方法(而不是像 ==
这样的运算符)。
在 Java 中,您无法使用 ==
运算符检查 Strings
之间的相等性。此运算符检查引用类型的相等引用,并且仅检查原始类型的相等值。由于 String
是引用类型,因此失败也就不足为奇了。
要检查 Strings
(或 Objects
之间的相等性),请使用:
str1.equals(str2);
或者您的情况:
afd.equals("1000");