【Java入門】String型のnullをチェックをする方法

この記事ではString型のnullをチェックをする方法をわかりやすく解説します!

  • 「nullのチェックをしたい」
  • 「isEmptyの使い方を知りたい」
  • 「nullと空文字列の違いを知りたい」

今回はそんな悩みを解決するnullについてです。

なお、Javaの記事については、こちらにまとめています。

目次

nullとは

初めにnullについて解説します。Javaには参照型とプリミティブ型の2つのデータ型があります。

String型は参照型のため値を直接持たず、値のある場所を参照するようになっています。
この参照先が無い状態をnullといいます。空の文字列の場合は参照先に空の文字列がある状態なので、nullにはなりません。

int型やchar型ように、値を直接格納する型をプリミティブ型といいます。
プリミティブ型にはnullがありません

参照型は型名が大文字から始まり、プリミティブ型は型名が小文字から始まるようになっているので、そこから区別することもできます。

nullと空文字列の違い

次にnullと空文字列の違いを解説します。

初期化などでString型にnullを代入したままの状態でメソッドを呼び出すと、NullPointerExceptionの例外が発生するので注意してください。空の文字列の場合は正常にメソッドを使うことができます。

次のプログラムで確認してみましょう。

public class Main {
 
    public static void main(String[] args) {
        String str1 = "";
        String str2 = null;
         
        System.out.println(str1.isEmpty());
        System.out.println(str2.isEmpty());
    }
}

[実行結果]

true
NullPointerException

空の文字列からメソッドを呼び出した場合は問題がありませんが、nullからメソッドを呼び出した場合にはNullPointerExceptionの例外が発生していることが確認できました!

nullと空文字列をチェックをする方法

最後にnullと空文字列をチェックをする方法を解説します。

文字列がnullのときにequalsメソッドを呼び出すと例外が発生するので、nullのチェックは”==”演算子で行います。

空文字列のチェックにはisEmptyメソッドを使います。isEmptyメソッドは文字列が空のときに”true”を返します文字列がnullか空文字列かをチェックする方法を確認するために次のプログラムを見てみましょう。

public class Main {
 
    public static void main(String[] args) {
        String str1 = null;
        String str2 = "";
        String str3 = " ";
         
        System.out.println(str1 == null);
        System.out.println(str2.isEmpty());
        System.out.println(str3.isEmpty());
    }
}

[実行結果]

true
true
false

このように”==”演算子とisEmptyメソッドを使うことで、nullと空文字列のチェックができました!

String(文字列クラス)総まとめ

String(文字列クラス)についてさらに詳しく知りたいときはこちらの記事を確認してください!

まとめ

いかがでしたか?

今回はString型のnullをチェックをする方法について解説しました。nullが代入されている状態からメソッドを呼び出した場合には例外が発生するので注意してくださいね。

もしnullについて忘れてしまったらこの記事を確認してください!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次