Nasıl bir dize kontrol etmek için java boş karşı?
Nasıl java boş karşı bir dize kontrol edebilir miyim? Kullanıyorum
stringname.equalsignorecase(null)
ama işe yaramıyor.
CEVAP
string == null
Eğer nesne null karşılaştırır. string.equals("foo")
değeri içindeki nesne ile karşılaştırır. string == "foo"
her zaman eğer nesneler aynı, temsil ettikleri değerler değil olup olmadığını görmek için çalışıyoruz, çünkü işe yaramaz.
Eğer bunu denerseniz, buldum gibi işe yaramaz:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
Nedeni foo boş olduğunu, ne olduğunu bilmiyorlar .; nesne Var Yok için eşittir .çağrılacak gelen eşittir.
Muhtemelen istediği oldu:
String foo = null;
if (foo == null) {
// That will work.
}
Dize ile ilgili bir null karşı kendinizi korumak için tipik bir şekilde
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
Eğer foo null ise, koşullu ikinci yarısında değerlendirmek değil, ve herşey çok güzel.
Kolay yolu eğer bir Dize (değişken) yerine kullanıyorsanız,,
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
Eğer bu geçici bir çözüm bulmak istiyorsanız, Apache Commons null-güvenli Dize işlemlerini sağlayan bir sınıf- StringUtils - vardır.
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
Başka bir tepki dalga geçiyordu, ve bunu yapmak gerekir " dedi
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
Lütfen bunu yapma. Sadece istisnai hatalar için istisnalar atmak gerekir; Eğer bir boş bekliyorsanız, bunun için kontrol edin ve İstisna atmayın.
Kafamda, bunun iki nedeni vardır. İlk olarak, özel durumlar yavaş, null karşı kontrol hızlı, ama JVM bir özel durum oluşturduğunda, çok zaman alır. İkinci olarak, kod okumak için çok daha kolaydır ve eğer sadece null işaretçi için kontrol edin eğer korumak.
Nasıl bir Dize Java sayısal bir tip ol...
Java nasıl Dize tüm boşluklar olduğunu...
Nasıl bir dize Java tek rakam varsa ko...
Bir dize kontrol etmek için nasıl &quo...
Nasıl bir dize Ruby bir dize içerip iç...