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

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011