【Java】文字列のnullの連結にご注意を
Javaでのお話。
個人的に知らなかった、文字列の結合の仕様についてメモ。
ずっと以下のコードはNullPointerExceptionになると思い込んでいたのだが、どうやら違う様子。
例: Demo.java
public class Demo { public static void main(String[] args) { System.out.println("hoge:" + null); // hoge:nullが出力される } }
きちんとnullという文字列として出力される。
なんだかこの挙動はJavaScriptのundefinedに似ているなぁ……なんて。
【Java】Auto-UnboxingでのNullPointerExceptionにご注意を
Nullに対してAuto-Unboxingが働くと、NullPointerExceptionが発生する。
なのでラッパークラスとプリミティブで比較を行う場合は、思いがけない場所で落とし穴にハマってしまう。
例:Demo1.java
public class Demo1 { public static void main(String[] args) { long hoge = 128L; Long fuga = null; System.out.println(hoge == fuga); // NulPointerExceptionが発生する } }
少しでもnullが入る可能性があるのであれば、しっかりと比較する前にNullのチェックをすれば良い。
例:Demo2.java
public class Demo2 { public static void main(String[] args) { long hoge = 128L; Long fuga = null; System.out.println(fuga != null && hoge == fuga); // falseが出力される } }