Bagaimana cara memeriksa string terhadap null di java? saya menggunakan
stringname.equalsignorecase(null)
tapi tidak berhasil.
string == null
membandingkan jika objeknya nol. string.equals("foo")
membandingkan nilai di dalam objek itu. string == "foo"
tidak selalu berhasil, karena Anda mencoba untuk melihat apakah objeknya sama, bukan nilai yang diwakilinya.
Jawaban yang lebih panjang:
Jika Anda mencoba ini, itu tidak akan berhasil, seperti yang Anda temukan:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
Alasannya adalah bahwa foo adalah null, jadi tidak tahu apa itu .equals; tidak ada objek di sana untuk memanggil .equals.
Apa yang mungkin Anda inginkan adalah:
String foo = null;
if (foo == null) {
// That will work.
}
Cara khas untuk melindungi diri Anda dari nol saat berhadapan dengan Strings adalah:
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
Dengan cara itu, jika foo adalah null, itu tidak mengevaluasi paruh kedua bersyarat, dan semuanya baik-baik saja.
Cara mudah, jika Anda menggunakan literal String (bukan variabel), adalah:
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
Jika Anda ingin mengatasinya, Apache Commons memiliki kelas - StringUtils - yang menyediakan operasi String aman-null.
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
Tanggapan lain bercanda, dan berkata Anda harus melakukan ini:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
Tolong jangan lakukan itu. Anda hanya boleh memberikan pengecualian untuk kesalahan yang luar biasa; jika Anda mengharapkan null, Anda harus memeriksanya terlebih dahulu, dan tidak membiarkannya mengeluarkan pengecualian.
Di kepala saya, ada dua alasan untuk ini. Pertama, pengecualiannya lambat; memeriksa null itu cepat, tetapi ketika JVM mengeluarkan pengecualian, itu membutuhkan banyak waktu. Kedua, kode jauh lebih mudah dibaca dan dipelihara jika Anda hanya memeriksa penunjuk nol sebelumnya.
s == null
tidak akan berhasil?
sumber
equals()
jika ingin membandingkan nilai . Tetapi jika Anda ingin memeriksa apakah suatu variabelnull
, Anda menggunakan==
.Yakin itu berhasil. Anda melewatkan bagian penting dari kode. Anda hanya perlu melakukan seperti ini:
boolean isNull = false; try { stringname.equalsIgnoreCase(null); } catch (NullPointerException npe) { isNull = true; }
;)
sumber
Gunakan Metode TextUtils jika Anda bekerja di Android.
TextUtils.isEmpty (str) : Mengembalikan nilai true jika string adalah null atau 0-length. Parameter: str string yang akan diperiksa Returns: true jika str null atau panjangnya nol
if(TextUtils.isEmpty(str)) { // str is null or lenght is 0 }
Di bawah ini adalah kode sumber dari metode ini. Anda dapat menggunakan langsung.
/** * Returns true if the string is null or 0-length. * @param str the string to be examined * @return true if str is null or zero length */ public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }
sumber
Jika kita melihat implementasi metode equalsIgnoreCase, kita menemukan bagian ini:
if (string == null || count != string.count) { return false; }
Jadi itu akan selalu kembali
false
jika argumennyanull
. Dan ini jelas benar, karena satu-satunya kasus di mana ia harus kembalitrue
adalah ketika equalsIgnoreCase dipanggil padanull String
, tapiString nullString = null; nullString.equalsIgnoreCase(null);
pasti akan menghasilkan NullPointerException.
Jadi metode yang sama tidak dirancang untuk menguji apakah suatu objek bernilai nol, hanya karena Anda tidak dapat memanggilnya
null
.sumber
Ini terlihat agak aneh, tapi ...
stringName == null || "".equals(stringName)
Tidak pernah ada masalah melakukannya dengan cara ini, ditambah lagi ini adalah cara yang lebih aman untuk memeriksanya sambil menghindari potensi pengecualian titik nol.
sumber
Saya tidak yakin apa yang salah dengan jawaban The MYYN.
if (yourString != null) { //do fun stuff with yourString here }
Pemeriksaan nol di atas cukup baik.
Jika Anda mencoba memeriksa apakah referensi String sama (mengabaikan kasus) ke string lain yang Anda tahu bukan referensi null, lakukan sesuatu seperti ini:
String x = "this is not a null reference" if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) { //do fun stuff }
Jika ada keraguan apakah Anda memiliki referensi null untuk kedua String yang Anda bandingkan atau tidak, Anda harus memeriksa referensi null setidaknya pada salah satunya untuk menghindari kemungkinan NullPointerException.
sumber
Jika string Anda memiliki nilai "null" maka Anda dapat menggunakan
if(null == stringName){ [code] } else [Error Msg]
sumber
impor di kelas Anda
import org.apache.commons.lang.StringUtils;
lalu gunakan, keduanya akan mengembalikan true
System.out.println(StringUtils.isEmpty("")); System.out.println(StringUtils.isEmpty(null));
sumber
Anda dapat memeriksa dengan String == null
Ini berhasil untuk saya
String foo = null; if(foo == null){ System.out.println("String is null"); }
sumber
Tentu saja user351809,
stringname.equalsignorecase(null)
akan memunculkan NullPointerException.Lihat, Anda memiliki objek string
stringname
, yang mengikuti 2 kemungkinan kondisi: -stringname
memiliki beberapa nilai string bukan nol (katakanlah "komputer"):Kode Anda akan berfungsi dengan baik saat mengambil formulir
"computer".equalsignorecase(null)
dan Anda mendapatkan respons yang diharapkan sebagai
false
.stringname
memilikinull
nilai:Di sini kode Anda akan macet, karena
null.equalsignorecase(null)
Bagaimanapun, tampak bagus pada tampilan pertama dan Anda mungkin berharap respons sebagai
true
,tetapi,
null
bukan objek yang dapat menjalankanequalsignorecase()
metode ini.Oleh karena itu, Anda mendapatkan pengecualian karena kasus 2.
Yang saya sarankan adalah gunakan saja
stringname == null
sumber
Metode sederhana:
public static boolean isBlank(String value) { return (value == null || value.equals("") || value.equals("null") || value.trim().equals("")); }
sumber
Jika yang
value
dikembalikan null, gunakan:if(value.isEmpty());
Kadang-kadang untuk memeriksa null,
if(value == null)
di java, itu mungkin tidak memberikan true bahkan String adalah null.sumber
if(value.isEmpty())
memberikanNullPointerException
. Dalam hal ini lebih baik menggunakanif(value == null)
Dengan Java 7 Anda dapat menggunakan
if (Objects.equals(foo, null)) { ... }
yang akan dikembalikan
true
jika kedua parameter tersebutnull
.sumber
Saya menyadari ini telah dijawab sejak lama, tetapi saya belum melihat ini diposting, jadi saya pikir saya akan membagikan apa yang saya lakukan. Ini tidak terlalu baik untuk keterbacaan kode, tetapi jika Anda harus melakukan serangkaian pemeriksaan nol, saya suka menggunakan:
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
Dalam contoh ini, trim dipanggil pada string, yang akan melempar NPE jika string itu nol atau spasi, tetapi pada baris yang sama, Anda dapat memeriksa null atau kosong sehingga Anda tidak berakhir dengan satu ton (lebih ) sulit untuk memformat jika blok.
sumber
Jika saya mengerti dengan benar, ini harus dilakukan:
if(!stringname.isEmpty()) // an if to check if stringname is not null if(stringname.isEmpty()) // an if to check if stringname is null
sumber
Nah, terakhir kali seseorang menanyakan pertanyaan konyol ini, jawabannya adalah:
someString.equals("null")
"Perbaikan" ini hanya menyembunyikan masalah yang lebih besar tentang bagaimana
null
menjadi"null"
di tempat pertama.sumber
Ada dua cara untuk melakukannya..Katakan String == null atau string.equals () ..
public class IfElse { public int ifElseTesting(String a){ //return null; return (a== null)? 0: a.length(); } } public class ShortCutifElseTesting { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("enter the string please:"); String a=scanner.nextLine(); /* if (a.equals(null)){ System.out.println("you are not correct"); } else if(a.equals("bangladesh")){ System.out.println("you are right"); } else System.out.println("succesful tested"); */ IfElse ie=new IfElse(); int result=ie.ifElseTesting(a); System.out.println(result); } }
Periksa contoh ini..Berikut adalah contoh lain dari versi pintasan If Else ..
sumber