JavaのString.isEmpty・StringUtils.isEmptyの使い方や違いとは


Javaで文字列が空文字かどうか知りたい。
空文字ではなくnullを調べるにはどうすればいいの?
String.isEmptyの使い方が知りたい
String.isEmptyとStringUtils.isEmpty違いが知りたい

JavaのStringを扱う上で、文字列が空文字列かどうか調べたい場合はString.isEmptyを使うと便利です。今回はJavaで空文字かnullかを調べる方法を解説していきます。

この記事はこんな人のために書きました

  • 文字列が空文字か判定する方法を知りたい方
  • nullか判定する方法も知りたい方
  • String.isEmptyとStringUtils.isEmptyの違いを知りたい方

String.isEmptyとStringUtils.isEmptyについてわかりやすく解説していますのでぜひ参考にしてください。

String.isEmptyとは

isEmptyメソッドは、空文字列か判定するためのメソッドです。
対象の文字列が空文字の場合はtrueを返します。

String.isEmpty()

isEmptyの使い方

isEmptyの結果を取得する

以下にisEmptyメソッドを使用して、boolean型の値を取得する方法を記述します。

public class Main {
    public static void main(String[] args) throws Exception {

        String str1 = "apple";
        String str2 = "";
        
        boolean bool1 = str1.isEmpty();
        boolean bool2 = str2.isEmpty();
        
        System.out.println("bool1 : " + bool1);
        System.out.println("bool2 : " + bool2);
    }
}

実行結果

bool1 : false
bool2 : true

サンプルではString型を宣言して、文字列と空文字列をそれぞれ設定しています。boolean型を宣言し、str1とstr2に対してisEmptyメソッドで空文字判定を行い、結果を返します。

isEmptyの結果を判定する

isEmptyはboolean型を返すので、if文で空文字列の有無を判定できます。

public class Main {
    public static void main(String[] args) throws Exception {

        String str = "";
        if (str.isEmpty())
        {
            System.out.println("isEmpty");
        }
    }
}

実行結果

isEmpty

サンプルではString型を宣言し、空文字列を設定しています。次にif文で変数strに対してisEmptyメソッドを使用して、空文字列か判定しています。

strは空文字列のため、isEmptyの結果はtrueとなり、if文が実行されます。

文字列を型変換する時の注意点

String型はさまざまな型へ変換することが可能ですが、空文字列のままで他の型へ変換すると、例外となります。

public class Main {
    public static void main(String[] args) throws Exception {

        String strex = "";
        double db = Double.parseDouble(strex);
        System.out.println("db : " + db);
    }
}

サンプルではString型を宣言して空文字列を設定し、空文字列のままdouble型へ変換しようとしています。

このサンプルを実行すると「NumberFormatException」の例外が発生してしまいます。そのため、isEmptyで事前に空文字列か判定してあげれば、例外を防ぐことができます。

StringUtils.isEmptyとは

String.isEmptyはnull判定ができない?

isEmptyメソッドを使用すれば、空文字列を判定することができますが、文字列の値がnullの場合にisEmptyメソッドを使用すると例外となります。

public class Main {
    public static void main(String[] args) throws Exception {

        String strnull = null; 
        
        if (strnull.isEmpty())
        {
            System.out.println("null");
        }
    }
}

サンプルではString型を宣言してnullを設定し、nullに対してisEmptyメソッドで参照するため、「java.lang.NullPointerException」が発生してしまいます。

nullは明示的に値が設定されていないことを意味するため、isEmptyで空文字は判定できても、null文字の場合は例外となってしまいます。

StringUtilsクラスのisEmptyの使用方法

前述したようにStringクラスのisEmptyメソッドは文字列のnull判定ができません。そのため、nullを判定する場合にはStringUtils.isEmptyを使用します。

StringUtilsクラスのisEmptyは、StringクラスのisEmpty同様に対象の文字列を判定してboolean型の戻り値を返します。

StringUtils.isEmpty(String str)

また、StringUtilsクラスを使用するには「Apache Commons Lang」のライブラリをインストールして「org.apache.commons.lang3.StringUtils」をインポートする必要があります。

ライブラリは以下のページからダウンロードできます。
http://commons.apache.org/proper/commons-lang/download_lang.cgi

以下にStringUtilsクラスのisEmptyメソッドを使用して、nullを判定する方法を記述します。

import org.apache.commons.lang3.StringUtils;

public class Main {
    public static void main(String[] args) throws Exception {
 
        String strnull = null; 
        if (StringUtils.isEmpty(strnull))
        {
                System.out.println("isEmpty");
        }
    }
}

実行結果

isEmpty

サンプルではString型を宣言してnullを設定し、StringUtilsクラスのisEmptyメソッドを使用して、引数に文字列を指定しています。

変数strnullはnullのため、isEmptyの結果はtrueとなり、if文が実行されます。また、StringUtilsクラスのisEmptyは、null以外にStringクラスのisEmpty同様に空文字列も判定することが可能です。

StringUtilsの詳しい使い方については、以下の記事で詳しく解説しています!

StringとStringUtilsのisEmptyはどちらを使うべき?

前述したようにStringクラスのisEmptyは空文字列を判定し、StringUtilsクラスのisEmptyはnullと空文字列を判定することが可能です。

文字列の値を初期化するときは、nullで初期化する場合と空文字列で初期化する場合があり、開発会社やシステムによって規約が異なります。

そのため、Stringの初期化はnullの場合もありますし、空文字の場合もありえます。実際に文字列の値に何が入っているかわからない場合は、迷わずStringUtilsクラスのisEmptyメソッドを使用することをオススメします。

String型のnullをチェックする方法は、以下の記事でも詳しく解説しています!

Stringについてもっと詳しく知りたい方へ

Stringのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、空文字列を判定するisEmptyメソッドの基本的な使い方や注意点、StringUtilsクラスのisEmptyメソッドについても説明しました。

実際の開発の現場では、文字列を判定する処理はさまざまな場面で使用することがあります。もし、isEmptyメソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説