JavaでString文字列が等しいかどうかの判定
2009/02/23 13:41Update
初心者はString文字列が等しいかどうかの判定を行う際に、間違って == 演算子を利用した経験がある方は少なくないと思います。本文は ==演算子とequalsメソッドの違いについて解説します。
文字列の値が等しいかどうかの判定は、equalsメソッドを使います。
==演算子は、インスタンスは等しいかどうかを判定する時に利用します。
以下のサンプルから、両者の違いを見てみましょう。
実行結果
実行結果から見てみると、new String()で生成された2つの文字列は、値が同じであっても、== 演算子で「等しくない」ことを分かりました。
なので、文字列の「等しいかどうかの判定」を行うには、常にequalsメソッドを利用したほうがいいでしょう。
equalsメソッドのほか、compareToという比較用メソッドがあります。
equalsメソッドの戻り値はbooleanであるのに、compareToの戻り値はint(等しい場合は0)になります。
詳細:Java文字列処理 - Stringクラス
==演算子は、インスタンスは等しいかどうかを判定する時に利用します。
以下のサンプルから、両者の違いを見てみましょう。
public class Test {
public static void main(String[] args) {
String value1 = "abc123";
String value2 = "abc123";
String value3 = new String("abc123");
String value4 = new String("abc123");
System.out.print("【\"abc123\" == \"abc123\"】 : ");
System.out.println(value1 == value2);
System.out.print("【\"abc123\" == new String(\"abc123\")】 : ");
System.out.println(value2 == value3);
System.out.print("【new String(\"abc123\") == new String(\"abc123\")】 : ");
System.out.println(value3 == value4);
System.out.print("【\"abc123\".equals(\"abc123\")】 : ");
System.out.println(value1.equals(value2));
System.out.print("【\"abc123\".equals(new String(\"abc123\"))】 : ");
System.out.println(value2.equals(value3));
System.out.print("【new String(\"abc123\").equals(new String(\"abc123\"))】 : ");
System.out.println(value3.equals(value4));
}
}
実行結果
【"abc123" == "abc123"】 : true
【"abc123" == new String("abc123")】 : false
【new String("abc123") == new String("abc123")】 : false
【"abc123".equals("abc123")】 : true
【"abc123".equals(new String("abc123"))】 : true
【new String("abc123").equals(new String("abc123"))】 : true
【"abc123" == new String("abc123")】 : false
【new String("abc123") == new String("abc123")】 : false
【"abc123".equals("abc123")】 : true
【"abc123".equals(new String("abc123"))】 : true
【new String("abc123").equals(new String("abc123"))】 : true
実行結果から見てみると、new String()で生成された2つの文字列は、値が同じであっても、== 演算子で「等しくない」ことを分かりました。
なので、文字列の「等しいかどうかの判定」を行うには、常にequalsメソッドを利用したほうがいいでしょう。
equalsメソッドのほか、compareToという比較用メソッドがあります。
equalsメソッドの戻り値はbooleanであるのに、compareToの戻り値はint(等しい場合は0)になります。
詳細:Java文字列処理 - Stringクラス
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)