今回は文字列の比較について説明します!
■文字列の比較
int xとint yが同じ値がどうか比較するためには「==演算子」を用います。
trueになれば同じ、falseだと異なるという結果が得られます。
しかし、値の比較に「==」が使えるのは実は基本データ型の比較のみです。
では、オブジェクト参照型の値を比較するにはどうすればいいかというと、equalsメソッドを用います。
サンプルプログラムで確かめてみましょう!
■SampleEquals.java
public class SampleEquals_01 { public static void main(String[] args) { String str1 = new String("文字列"); String str2 = new String("文字列"); boolean result = (str1 == str2); System.out.println("==演算子 : " + result); result = str1.equals(str2); System.out.println("equalsメソッド : " + result); } }
■実行結果
==演算子 : false
equalsメソッド : true
■解説
str1とstr2に同じ文字列でインスタンス化されています。
この2つの変数を「==演算子」と「equalsメソッド」で比較しています。
すると実行結果からわかる通り、==演算子だと「false」、equalsメソッドだと「true」が返ってきます。
実は、「==演算子」は参照先の比較、「equalsメソッド」は文字列の比較を行っています。
簡単に言ってしまうと、”文字列”という値が2箇所に存在しています。
その場所の比較をしているのか、それともその中身の比較をしているのか、という違いです。
■まとめ
- 同じ文字列かどうか比較するには、「equalsメソッド」を使用する。
- 「==演算子」は文字列ではなく、参照先の比較になってしまう。
使い分けとしてはそれほど難しくありません。
しかし、つい==演算子を使ってしまい思い通りに動作しない、ということが考えられますので、
文字列の比較の際には十分気をつけてください!