Javaで文字列が空文字かどうか知りたい。
空文字ではなくnullを調べるにはどうすればいいの?
String.isEmptyの使い方が知りたい
String.isEmptyとStringUtils.isEmpty違いが知りたい
JavaのStringを扱う上で、文字列が空文字列かどうか調べたい場合はString.isEmptyを使うと便利です。今回はJavaで空文字かnullかを調べる方法を解説していきます。
この記事はこんな人のために書きました
- 文字列が空文字か判定する方法を知りたい方
- nullか判定する方法も知りたい方
- String.isEmptyとStringUtils.isEmptyの違いを知りたい方
String.isEmptyとStringUtils.isEmptyについてわかりやすく解説していますのでぜひ参考にしてください。
なお、Javaの記事については、こちらにまとめています。
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メソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!