我正在尝试比较按钮的文字,以决定我正在制作的Android应用中采取的行动方案。我得到一些我不明白的意外行为。
clickMeButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (v.getId() == R.id.btnLeft) {
Button button = (Button) v;
String click = new String("Click me");
String look = new String(button.getText().toString());
Boolean check = new Boolean(look == click);
if (button.getText().toString() == "Click me") {
变量检查返回false。为什么?在调试器中,两个项目旁边都列出了“单击我”。我在模拟器中单击的按钮显示“Click me”,其原始文本“Click me”由xml指定。
答案 0 :(得分:5)
这不是我们在Java中进行字符串比较的方式。试试这个
if (button.getText().toString().equals("Click me")) {
==
检查两个参数是否都是同一个对象,而equals()
检查两个参数是否具有相同的值。
答案 1 :(得分:1)
如果将字符串对象与字符串对象进行比较,则可以。但是您正在将对象与char数组进行比较。对象永远不会= = char数组。对象值可以相等,但对象比较将返回false。因为这2个变量不一样。 在java中,比较字符串的最佳实践是相同的方法。
Boolean check = new Boolean(look == click); // DO NOT
Boolean check = new Boolean(look.equals(click)); // DO
if语句也是一样。
if (button.getText().toString().equals(click)){..}
编辑:这是一个很好的解释 How do I compare strings in Java?