Java equalsで値がnullまたは空文字の時のサンプル

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

目次

値がnullのとき

  • 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メソッドで比較する

equalsメソッドで値がnullのときのサンプルです。

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

コード

サンプルのコードです。

package test1;

import java.util.Objects;

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

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

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

コード

サンプルのコードです。

package test1;

import org.apache.commons.lang3.StringUtils;

public class Test1 {
	public static void main(String[] args) {
		String null1 = null;
		String null2 = null;
		String moji = "abc";
		
		// 1. equals(null, 文字列)の場合
		if (StringUtils.equals(null1,moji)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	  
		// 2. equals(文字列,null)の場合
		if (StringUtils.equals(moji,null1)) {
		} else {
			System.out.println("false"); // falseが出力される
		}
	 
		// 3. equals(null, null)の場合
		if (StringUtils.equals(null1,null2)) {
			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 null1 = null;
		
		// nullかどうか==で確認
		if (null1 == null) {
			System.out.println("true"); // true
		}
	}
}

値が空文字のとき

  • 空文字("")も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 kara1 = "";
		String kara2 = "";
		String moji = "abc";

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

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

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

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

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

Java7で追加されたObjects.equals(a,b)のサンプルです。

package test1;

import java.util.Objects;

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

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

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

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

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

空文字か確認する方法

空文字の確認方法は、以下を参照願います。
Java 値が空文字か確認する(isEmpty/StringUtils)

関連の記事

Java 文字列の値を比較する(equals/compareTo)

△上に戻る