≪Java≫ NULLと空文字の判定
判定の書く順番で実行時エラーになります。
前提として、
equalsは、変数がnullの場合使えない(実行時エラーになる)ので、str==nullという書き方になる。
【正しい書き方】
if(str==null || str.equals(“”))
↑ 先に「str=null」を実行して、(論理演算子が「または」なので)equalsを実行しないのでエラーにならない。
【間違った書き方】
if(str.equals(“”)) || str==null)
↑ 先に「equals」が実行されるので実行時エラーとなる。
≪自分への参考メモ≫
public static void main(String[] args) {
String [] s, o, p;
//System.out.println(s); ←コンパイルエラーになる
s = new String[] {“”};
o = new String[] {null};
p = new String[] {“null”};
System.out.println(“① ” + s);
System.out.println(“② ” + o);
System.out.println(“③ ” + p);
System.out.println(“④ ” + s[0]);
System.out.println(“⑤ ” + o[0]);
System.out.println(“⑥ ” + p[0]);
String ss;
ss = “”;
System.out.println(“(1) ” + ss);
ss = null;
System.out.println(“(2) ” + ss);
ss = “null”;
System.out.println(“(3) ” + ss);
}
↓実行結果
① [Ljava.lang.String;@193385d
② [Ljava.lang.String;@5973ea
③ [Ljava.lang.String;@c9131c
④
⑤ null
⑥ null
(1)
(2) null
(3) null