文字列を比較する際に使用する
equalsメソッドについて
解説していきます。
具体的には、
オブジェクトの実体であるインスタンスの
等価性を比較します。
equalsメソッドは、
==の演算子と違って
別のオブジェクトでも
同じ文字列であればtrueを返却します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public class Main { public static void main(String[] args) { String str = null; //nullでも正常に判定 if ("文字列".equals(str)) { System.out.println("true"); } else { System.out.println("false"); } //NullPointerExceptionが発生 if (str.equals("文字列")) { System.out.println("true"); } else { System.out.println("false"); } } } |
1 2 3 |
false Exception in thread "main" java.lang.NullPointerException at Sample.Main.main(Main.java:23) |
上記のソースで確認すると
リテラルを引数にして比較すると、
str変数がnullの場合は
NullPointerExceptionが発生して
バグになります。
その為、リテラルが先で
比較する変数を引数にする
記載方法にしてください。
そうすることで
変数がnullの場合でも
正常に処理が可能です。
- “リテラル”.equlas(str) ○
- str.equlas(“リテラル”) ✕
Java 7で新しく導入されたAPI。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.Objects; public class Main { public static void main(String[] args) { String a = null; String b = null; if (Objects.equals(a, b)) { System.out.println("true"); } else { System.out.println("false"); } } } |
1 |
true |
java.util.Objectsクラスでの
equalsメソッドは
引数がnullの場合でも
正常に処理が可能です。
この記事へのコメントはありません。