java - if语句比较java android中的字符串

标签 java android eclipse string if-statement

<分区>

Possible Duplicate:
Java String.equals versus ==

我正在尝试在 az DBOpenHelper extends SQLOpenHelper 类中编写一个方法。 它应该评估数据库中是否有同名条目。

public boolean existsContact(Contact contact) {

    SQLiteDatabase db = this.getReadableDatabase();
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {

            String name = cursor.getString(1);
            String cname = contact.getName();
            if (name == cname) {

                cursor.close();
                db.close();
                return true;
            }

        } while (cursor.moveToNext());
    }

    db.close();

    return false;
}

下面是 Contact 类的相关部分:

 public class Contact {

    String _name;
    public String getName(){
        return this._name;
    }
    }

奇怪的是:

场景 A:if (name == cname) 其中 name = "foo"cname = "foo" 等于 false。 Eclipse 调试器显示名称的 foo 和 cname 的 foo 具有不同的 ID。 两个变量都按照之前在代码中看到的那样填充。

场景 B:if(name == cname) 变量加载如下:

String name = "foo";
String cname = "foo";
         statement equals true as it's supposed to.

场景 C:if("foo"== "foo") 等于 true...但是...调试器消失了。 LogCat 显示调试器已连接,但在 Eclipse 的调试透视图中没有任何 Activity 。断点无效。没有显示线程。

最佳答案

在 java 中,当在两个对象上使用 == 时,您实际上并不是在比较字符串本身。您需要使用 .equals(String)

== 实际上比较的是两个对象的引用,而不是它们的值。

string1.equals(String target) 根据字符串中的实际字符比较两个字符串。

参见:http://www.leepoint.net/notes-java/data/expressions/22compareobjects.html

关于java - if语句比较java android中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944799/

相关文章:

java - java中如何将String类型转换为Class类型

android - Android 麦克风到扬声器直接流媒体应用程序的音频延迟

java - 从源代码中打开类文件

android - 按下 "Close"后不要让应用程序再次启动

Java Swing JTextArea 滚动条未显示在内部

Java泛型,返回什么而不是-1

android - 通话时间禁用设置按钮

android - Xamarin - Visual Studio - 尽管已安装,但 Android 编译版本不存在

eclipse - 如何更改 E4 RCP 产品生成的可执行文件的图标?

java - GWT编译文件夹中的deferredjs文件夹