Java equalsでnullまたは空文字を比較するサンプル

Javaのequalsメソッドでnullまたは空文字を比較するサンプルです。

目次

値がnullのとき nullをequalsメソッドで比較する
  nullをObjects.equals(a,b)で比較する
  nullをStringUtilsクラスのequalsメソッドで比較する
  nullか確認する方法
値が空文字のとき 空文字をequalsメソッドで比較する
  空文字をObjects.equals(a,b)で比較する

nullをequalsメソッドで比較する

  • a.equals(b)のとき、aがnullの場合は、NullPointerExceptionが発生します。
  • a.equals(b)のとき、aがnullではなくbがnullの場合は、falseを返します。
  • Java7で追加されたObjects.equals(a,b)は、a,bがnullでもNullPointerExceptionは発生しません。

nullをequalsメソッドで比較するサンプルです。

package test1;
 
public class Test1 {
	public static void main(String[] args) {
		String a = null;
		String b = null;
		String moji = "abc";
		
		// 1. null.equals(文字列)の場合
		try {
			if (a.equals(moji)) {
				System.out.println("true"); // 出力されない
			}
		} catch (NullPointerException e) {
			System.out.println(e); // NullPointerExceptionが出力される
		}
	  
		// 2. 文字列.equals(null)の場合
		if (moji.equals(a)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	 
		// 3. null.equals(null)の場合
		try {
			if (a.equals(b)) {
			} else {
				System.out.println("false"); // 出力されない
			}
		} catch (NullPointerException e) {
			System.out.println(e); // NullPointerExceptionが出力される
		}
	}
}

11,26行目は、Nullポインタの例外が発生します。
19行目は、falseになります。

nullをObjects.equals(a,b)で比較する

public static boolean equals(Object a,Object b)

nullをObjects.equals(a,b)で比較するサンプルです。

package test1;

import java.util.Objects;

public class Test1 {
	public static void main(String[] args) {
		String a = null;
		String b = null;
		String moji = "abc";
		
		// 1.equals(null, 文字列)の場合
		if (Objects.equals(a, moji)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	 
		// 2.equals(文字列,null)の場合
		if (Objects.equals(moji, a)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	 
		// 3.equals(null, null)の場合
		if (Objects.equals(a, b)) {
			System.out.println("true"); // trueが出力される
		}
	}
}

24行目は、両方の値ともnullですがtrueになります。

nullをStringUtilsクラスのequalsメソッドで比較する

public static boolean equals(CharSequence cs1,CharSequence cs2)

nullをStringUtilsクラスのequalsメソッドで比較するサンプルです。

package test1;

import org.apache.commons.lang3.StringUtils;

public class Test1 {
	public static void main(String[] args) {
		String a = null;
		String b = null;
		String moji = "abc";
		
		// 1. equals(null, 文字列)の場合
		if (StringUtils.equals(a,moji)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	  
		// 2. equals(文字列,null)の場合
		if (StringUtils.equals(moji,a)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	 
		// 3. equals(null, null)の場合
		if (StringUtils.equals(a,b)) {
			System.out.println("true"); // trueが出力される
		}
	}
}

3行目は、StringUtilsをimportしています。
24行目は、両方の値ともnullですがtrueになります。

nullか確認する方法

nullかどうかは、==で確認できます。

package test1;

public class Test1 {
	public static void main(String[] args) {
		String a = null;
		
		// nullかどうか==で確認
		if (a == null) {
			System.out.println("true"); // true
		}
	}
}

空文字をequalsメソッドで比較する

  • 空文字("")もequalsメソッドで判定できます。
  • a.equals(b)のときのa,bのいずれかまたはa,bの両方が空文字でも例外は発生しません。
  • Java7で追加されたObjects.equals(a,b)は、a,bが空文字でも例外は発生しません。

空文字をequalsメソッドで比較するサンプルです。

package test1;

public class Test1 {
	public static void main(String[] args) {
		
		String a = "";
		String b = "";
		String moji = "abc";

		// 1. 文字列.equals("")の場合
		if (moji.equals(a)) {
		} else {
			System.out.println("false"); // falseが出力される
		}

		// 2. "".equals(文字列)の場合
		if (a.equals(moji)) {
		} else {
			System.out.println("false"); // falseが出力される
		}

		// 3. "".equals("")の場合
		if (a.equals(b)) {
			System.out.println("true"); // trueが出力される
		}
	}
}

23行目は、両方の値とも空文字です。trueになります。

空文字をObjects.equals(a,b)で比較する

空文字をObjects.equals(a,b)で比較するサンプルです。

package test1;

import java.util.Objects;

public class Test1 {
	public static void main(String[] args) {
		
		String a = "";
		String b = "";
		String moji = "abc";

		// 1.Objects.equals(文字列, "")の場合
		if (Objects.equals(moji, a)) {
		} else {
			System.out.println("false"); // falseが出力される
		}

		// 2.Objects.equals("",文字列)の場合
		if (Objects.equals(a, moji)) {
		} else {
			System.out.println("false"); // falseが出力される
		}

		// 3.Objects.equals("","")の場合
		if (Objects.equals(a, b)) {
			System.out.println("true"); // trueが出力される
		}
	}
}

25行目は、両方の値とも空文字です。trueになります。

関連の記事

Java 文字列の値を比較(==ではなくequalsを使用)

△上に戻る