equals/equalsIgnoreCaseメソッド
文字列が等しいかを確認する – equals/equalsIgnoreCaseメソッド- public boolean equals(Object str)
- public equalsIgnoreCase(String str)
- obj:比較する文字列
2つの文字列が等しいかどうかを確認するには、equalsメソッドを利用します。大文字小文字を区別せずに比較したい場合には、equalsIgnoreCaseメソッドを利用することもできます。
StrEquals.java
1 2 3 4 5 6 7 8 9 | package com.example.mynavi.string; public class StrEquals { public static void main(String[] args) { String msg = "Hello!" ; System.out.println(msg.equals( "hello!" )); // 結果:false System.out.println(msg.equalsIgnoreCase( "hello!" )); // 結果:true } } |
文字列の比較に「==」演算子を利用してはいけません。「str1 == str2」はstr1/str2が同じオブジェクトを参照しているかをチェックするものであるからです。たとえば、以下は中の値は同じ「いろは」ですが、「==」演算子はfalseを返します。
StrEquals2.java(抜粋)
1 2 3 | String str1 = "いろは" ; String str2 = "いろ" ; System.out.println(str1 == str2 + "は" ); // 結果:false |
ちなみに、以下のコードは例外的にtrue(等しい)となります。
StrEquals3.java(抜粋)
1 2 3 | String str1 = "いろは" ; String str2 = "いろは" ; System.out.println(str1 == str2); // 結果:true |
Javaでは、文字列リテラルによって暗黙的に生成された文字列オブジェクトは、同値であれば同一であるというルールがあるからです。ただし、これは例外的な一致であり、基本的にStringオブジェクトは「==」演算子で比較しない、と覚えておきましょう。