SORU
26 Ocak 2011, ÇARŞAMBA


Arasındaki fark null ve empty (&;" quot;) Java String

null "" (boş string) arasındaki fark nedir?

Bu gibi bazı basit kod yazdım:

String a = "";
String b = null;

System.out.println(a==b); // false
System.out.println(a.equals(b)); // false

Ve her iki ifade false dönüş. Aralarındaki gerçek fark nedir bulmak mümkün değil, öyle görünüyor.

CEVAP
26 Ocak 2011, ÇARŞAMBA


"" gerçek bir dize, bir boş bir de olsa.

boş, ancak, Dize değişkeni bir şey için puan anlamına gelir.

a==b "" ve boş bellek--diğer bir deyişle, kendi değişkenleri aynı nesneleri işaret yok. aynı alanı işgal yok çünkü yanlış döndürür

a.equals(b) döndürür, çünkü yanlış "" boş, belli ki eşit değil.

Farkı "gerçek bir dize", hala öyle . yöntemleri veya işlevleri çağırmak olmadığından olsa

a.length()

a.substring(0, 1)

ve benzeri.

Eğer Dize null eşitse, b gibi, Java eğer yürütmesini deneseydin NullPointerException atmak istiyorsunuz, dediler

b.length()


Merak yani fark == versus eşitse, o da şu:

== kaynaklar, eğer gitseydim gibi karşılaştırır

String a = new String("");
String b = new String("");
System.out.println(a==b);

Farklı nesneler için iki farklı nesne, ve a ve b noktası ayrılmış çünkü yanlış çıktı.

, 14* *Bu durumda ancak Dizeleri equals true döndürür, çünkü doğru döndürecektir if and only if the argument String is not null and represents the same sequence of characters.

Java Dizeleri için özel bir durum var mı uyardı olacak.

String a = "abc";
String b = "abc";
System.out.println(a==b);

Çıkış iki farklı Dizeleri ayrılamadı bu yana 17 ** olacağını düşünürdüm. Aslında, Java intern edebi Dizeleri (ve bizim örneğimizde b gibi başlatılmış olanlar). Böylece bazı yanlış pozitif nasıl == ver olabilir dikkatli olun, çünkü çalışır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • dcigs

    dcigs

    9 EYLÜL 2006
  • How To Cook That

    How To Cook

    16 NİSAN 2011