SORU
8 NİSAN 2010, PERŞEMBE


Nasıl benim dize null değerine eşit olup olmadığını kontrol etmek için?

Eğer benim dize anlamlı bir değeri VARSA, SADECE bazı eylemleri gerçekleştirmek istiyorum. Yani, bu çalıştım.

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 benim programı 11* *benim dize BOŞ OLDUĞU gerçeğine rağmen. 12* *eşittir. Bu yanlış olan ne?

EKLEDİ:

Sorunun nedenini buldum. Değişken bir dize olarak ilan edildi ve bunun sonucu olarak, null bu değişken için 14 ** dönüştürülmüş atandı! Yani, if (!myString.equals("null")) çalışır.

CEVAP
8 NİSAN 2010, PERŞEMBE


if (myString != null && !myString.isEmpty()) {
  // doSomething
}

Daha fazla yorum olarak, equals Sözleşmede bu dönem bilmeniz gerekir:

Object.equals(Object):

Boş olmayan herhangi bir referans değeri için x, x.equals(null) 21**.

null ile karşılaştırmak yolu x == null x != null kullanmaktır.

Ayrıca, x.field x.method() x == null NullPointerException atar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hallucination Land

    Hallucinatio

    14 Ocak 2011
  • RocketJump

    RocketJump

    22 ŞUBAT 2006
  • the one am radio

    the one am r

    6 Mayıs 2006