Javaのequalsメソッドで比較する値がnullまたは空文字だった場合のサンプルです。
確認環境 ・Java 8 |
目次
値が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のときのサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
String null1 = null;
String null2 = null;
String moji = "abc";
// 1. null.equals(文字列)の場合、NullPointerExceptionになる
try {
if (null1.equals(moji)) {
System.out.println("1:true"); // 出力されない
}
} catch (NullPointerException e) {
System.out.println(e); // NullPointerExceptionが出力される
}
// 2. 文字列.equals(null)の場合、falseになる
if (moji.equals(null1)) {
} else {
System.out.println("2:false"); // 2:falseが出力される
}
// 3. null.equals(null)の場合、NullPointerExceptionになる
try {
if (null1.equals(null2)) {
} else {
System.out.println("3:false"); // 出力されない
}
} catch (NullPointerException e) {
System.out.println(e); // NullPointerExceptionが出力される
}
}
}
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 null1 = null;
String null2 = null;
String moji = "abc";
// 4. Objects.equals(null, 文字列)の場合、falseになる
if (Objects.equals(null1, moji)) {
} else {
System.out.println("4:false"); // 4:falseが出力される
}
// 5. Objects.equals(文字列,null)の場合、falseになる
if (Objects.equals(moji, null1)) {
} else {
System.out.println("5:false"); // 5:falseが出力される
}
// 6. Objects.equals(null, null)の場合、trueになる
if (Objects.equals(null1, null2)) {
System.out.println("6:true"); // 6:trueが出力される
}
}
}
==でnullかどうか確認
==でnullかどうか確認できます。
package test1;
public class Test1 {
public static void main(String[] args) {
String null1 = null;
// 7. nullかどうかは==で比較できる
if (null1 == null) {
System.out.println("7:true"); // 7:trueが出力される。
}
}
}
値が空文字のとき
- 空文字("")もequalsメソッドで判定できます。
- a.equals(b)のときのa,bのいずれかまたはa,bの両方が空文字でも例外は発生しません。
- Java7で追加されたObjects.equals(a,b)は、a,bが空文字でも例外は発生しません。
コード
サンプルのコードです。
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("1:false"); // 1:falseが出力される
}
// 2. "".equals(文字列)の場合
if (kara1.equals(moji)) {
} else {
System.out.println("2:false"); // 2:falseが出力される
}
// 3. "".equals("")の場合
if (kara1.equals(kara2)) {
System.out.println("3:true"); // 3: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";
// 4. Objects.equals(文字列, "")の場合
if (Objects.equals(moji, kara1)) {
} else {
System.out.println("4:false"); // 4:falseが出力される
}
// 5. Objects.equals("",文字列)の場合
if (Objects.equals(kara1, moji)) {
} else {
System.out.println("5:false"); // 5:falseが出力される
}
// 6. Objects.equals("","")の場合
if (Objects.equals(kara1, kara2)) {
System.out.println("6:true"); // 6:trueが出力される
}
}
}
isEmptyメソッドで確認
空文字はisEmptyメソッドで確認できます。
package test1;
public class Test1 {
public static void main(String[] args) {
String kara1 = "";
// 7. 空文字はisEmptyメソッドで確認できる
if (kara1.isEmpty()) {
System.out.println("7:true"); // 7:trueが出力される
}
}
}
Objectクラス - equalsメソッド
public boolean equals (Object obj) |
- 以下はJava8 API仕様のObjectクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html
Objectsクラス - equalsメソッド
public static boolean equals (Object a, Object b) |
- 以下はJava8 API仕様のObjectsクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Objects.html
関連の記事