Bagaimana cara memeriksa string terhadap null di java? saya menggunakan
stringname.equalsignorecase(null)
tapi tidak berhasil.
Bagaimana cara memeriksa string terhadap null di java? saya menggunakan
stringname.equalsignorecase(null)
tapi tidak berhasil.
Jawaban:
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?
equals()
jika ingin membandingkan nilai . Tetapi jika Anda ingin memeriksa apakah suatu variabel null
, 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;
}
;)
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;
}
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 argumennya null
. Dan ini jelas benar, karena satu-satunya kasus di mana ia harus kembali true
adalah ketika equalsIgnoreCase dipanggil pada null String
, tapi
String 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
.
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.
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.
Jika string Anda memiliki nilai "null" maka Anda dapat menggunakan
if(null == stringName){
[code]
}
else
[Error Msg]
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));
Anda dapat memeriksa dengan String == null
Ini berhasil untuk saya
String foo = null;
if(foo == null){
System.out.println("String is null");
}
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"): "computer".equalsignorecase(null)
false
.stringname
memiliki null
nilai: null.equalsignorecase(null)
true
, null
bukan objek yang dapat menjalankan equalsignorecase()
metode ini.Oleh karena itu, Anda mendapatkan pengecualian karena kasus 2.
Yang saya sarankan adalah gunakan sajastringname == null
Metode sederhana:
public static boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
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.
if(value.isEmpty())
memberikan NullPointerException
. 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 tersebut null
.
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.
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
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.
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 ..