Dizemin null'a eşit olup olmadığını nasıl kontrol edebilirim?
SADECE dizem anlamlı bir değere sahipse bazı eylemler gerçekleştirmek istiyorum. Bu yüzden şunu denedim.
if (!myString.equals("")) {
doSomething
}
ve bu
if (!myString.equals(null)) {
doSomething
}
ve bu
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
ve bu
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
ve bu
if ( myString.length()>0) {
doSomething
}
Ve her durumda programım, dizemin BOŞ OLDUĞU gerçeğine rağmen bir şey
yapıyor. Bu null
a eşittir. Peki, bunun nesi yanlış?
EKLENDİ:
Sorunun nedenini buldum. Değişken bir string olarak bildirilmişti ve sonuç olarak bu değişkene atanan null
, "null"
! Yani, if (!myString.equals("null"))
çalışıyor.
166
3
Ek bir yorum olarak, "eşitler" sözleşmesindeki bu terimin farkında olmalısınız:
From
Object.equals(Object)
: gt;Null olmayan herhangi birx
referans değeri için,x.equals(null)
'false' döndürmelidir.null
ile karşılaştırmanın yolu
x == nullve
x != null` kullanmaktır.Ayrıca,
x == null
isex.field
vex.method()
NullPointerException
atar.myString
nesnesinin
null` olup olmadığını kontrol etmeniz gerekir:Dene,