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

  • BradleyWuzHere

    BradleyWuzHe

    25 NİSAN 2011
  • guau . .

    guau . .

    25 Ocak 2008
  • TV nEW

    TV nEW

    25 AĞUSTOS 2012