重複の可能性:
Java String.equals と ==
az DBOpenHelper extends SQLOpenHelper class でメソッドを作成しようとしています。DBに同じ名前のエントリがあるかどうかを評価するはずです。
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 :と が false にif (name == cname)
等しい 場合。Eclipse デバッガーは、名前の foo と cname の foo の ID が異なります。コードで前に見たように、両方の変数が埋められました。name = "foo"
cname = "foo"
シナリオ 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 のデバッグ パースペクティブにはアクティビティがありません。ブレークポイントは効果がありません。スレッドが表示されません。