【Java】nullを空文字や0に置換する方法

管理人
この記事では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 にまとめてあります

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP