Javaにおいて文字列を比較する際、==
とequals()
メソッドの違いは重要です。これらの方法は文字列の比較に異なるアプローチを取ります。
==
演算子の使用
Javaでは==
演算子は、オブジェクトの参照を比較します。つまり、同じオブジェクトを指している場合にのみtrue
を返します。しかし、文字列は通常、プールされたオブジェクトとして扱われることがあります。
例:
String str1 = "Hello";
String str2 = "Hello";
boolean result = (str1 == str2); // true
この場合、Javaは文字列プールを使用して同じ文字列が共有され、==
演算子は期待通りに動作します。
equals()
メソッドの使用
一方で、equals()
メソッドは文字列の実際の内容を比較します。このメソッドはObject
クラスから継承されたメソッドをString
クラスがオーバーライドしているため、文字列の内容を比較する際に使用できます。
例:
String str1 = new String("Hello");
String str2 = new String("Hello");
boolean result = str1.equals(str2); // true
この場合、equals()
メソッドは文字列の内容を比較し、文字列が同じであればtrue
を返します。注意すべきは、==
演算子とは異なり、new String()
を使用した場合でも正確な比較ができることです。
要点として、文字列の比較では内容を重視する場合はequals()
メソッドを使用し、オブジェクトの参照を比較する場合は==
演算子を使用することが重要です。