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

  • HowcastSportsFitness

    HowcastSport

    11 Mayıs 2011
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006
  • SVB International

    SVB Internat

    29 EKİM 2011