この記事ではJavaのnullを空文字や0に置換する方法を解説します。
【Java】nullを空文字や0に変換する方法
nullを空文字に変換する方法
Javaでnullを空文字に変換するにはif文でnullであるか判定し、その後変数に空文字をセットしてあげることで対応可能です。
if (変数 == null){ 変数 = ""; } ※変数は値がnullのString型
Javaでnullの場合、比較しようとすると java.lang.NullPointerExceptionとなります。そのため、nullでエラーとなる可能性がある場合置き換える必要があります。
以下ではnullとカラを比較してエラーとなっています。
Map<String, Object> Map = new HashMap<>(); String value = (String) Map.get("TEST"); if(value.equals("")) { System.out.println(value); } // 実行結果 java.lang.NullPointerException
取得する値がnullとなる可能性がある場合はnullを空文字に変換してやれば良いです。
Map<String, Object> Map = new HashMap<>(); String value = (String) Map.get("TEST"); if(value == null) { value = ""; } if(value.equals("")) { System.out.println(value); } // 実行結果※空文字が出力
※value == null でnullかどうか判定し、value=”” で空文字をセットすることで変換することができます。
nullを0に変換する方法
数値についても同様にできそうですが、以下のメソッドは組めません。
Map<String, Object> Map = new HashMap<>(); int value = (Integer) Map.get("test"); //ここで取得しようとしてNullPointerExceptionとなる。 if(value == null) { //value == nullは構文エラーとなる value = 0; }
数値の値を取得したい場合でnullとなり得る場合はObjects.isNull(obj)で三項演算子を利用して、nullの場合は、0をセット、存在する場合は値を取得する形とすれば、nullの場合は0に変換できます。
Objects.isNull(取得する変数) ? 0 :取得する変数;
以下のとおりnullの場合は0に、null出ない場合は値を取得できます。
//取得する数値がnullのケース Map<String, Object> Map = new HashMap<>(); int value = Objects.isNull((Integer) Map.get("test")) ? 0 :(Integer) Map.get("test"); System.out.println(value); //実行結果 0
//取得する数値がnullでないケース Map<String, Object> Map = new HashMap<>(); Map.put("test",100); int value = Objects.isNull((Integer) Map.get("test")) ? 0 :(Integer) Map.get("test"); System.out.println(value); //実行結果 100
OptionalのorElseメソッドでも置換が可能
OptionalのorElseは値を取得することができ、なおかつ値が存在しない場合は、引数に設定した値を返します。
//nullの場合、カラとする Optional<String> opt = Optional.ofNullable(null); String str = opt.orElse(""); System.out.println(str); // 実行結果
//nullの場合、ゼロとする Optional<Integer> opt = Optional.ofNullable(null); int i = opt.orElse(0); System.out.println(i); //実行結果 0
Javaの記事の一覧はJava にまとめてあります