【初心者向け】Javaでの文字列と文字列の比較方法

文字列の比較
  • このエントリーをはてなブックマークに追加
  • Pocket

Javaの文字列はStringクラスの参照型だ。演算子で比較してもうまく動作しないことがある。

このページではJavaでの文字列比較の方法についてお伝えした。参考にしていただければと思う。

Javaでの文字列の比較

整数などの基本型の場合、値が一致するかどうかの比較は「==」演算子を使用する。

しかし、Stringクラスは参照型なので「==」演算子で比較しても、オブジェクトの実体までは比較していないので正しく動作しない場合がある。

equalsメソッド

文字列の比較のために、Stringクラスではequalsというメソッドを用意している。

下記のように比較をすることができる。

比較相手の文字列.equals(比較対象の文字列);

で簡単に比較することができる。

文字列と文字列の比較 

実際に、「==」で比較した場合も含めて、どうなるかを見ていこう。

サンプルコード

実行結果

サンプルコードの説明

  • [1] String型の変数str1を宣言し、初期化。
  • [2] String型の変数str2を宣言し、初期化。
  • [3] String型の変数str3を宣言。明示的にnew演算子を用いてStringオブジェクトを生成し値を代入。
  • [4] String型の変数str4を宣言し、初期化。
  • [5] String型の変数str5を宣言し、初期化。str1と文字”日”を連結した文字列を代入
  • [6] str1とstr2を「==」演算子を用いて比較。
  • [7] str2とstr3を「==」演算子を用いて比較。
  • [8] str1とstr3を「==」演算子を用いて比較。
  • [9] str4とstr5を「==」演算子を用いて比較。
  • [10] str1とstr2を.equalsメソッドを用いて比較。
  • [11] str2とstr3を.equalsメソッドを用いて比較。
  • [12] str2とstr3を.equalsメソッドを用いて比較。
  • [13] str2とstr3を.equalsメソッドを用いて比較。

「==」演算子の場合

「==」演算子を用いて比較をしても[6]のように正しい結果が返ってくることもある。

しかし、これはJavaの内部処理でなるべくメモリを有効に利用しようとしているから起こることであり、正確な動きを保証しているものではない。

str1とstr2では、宣言と同時に同じ「朝」という文字で初期化している。

この場合、「Javaの内部で同じ文字を代入していることからオブジェクトの実体を共有する」という動きになっている。そのため、「==」演算子を用いて比較しても同じだというtrueの結果が返ってくることになる。

しかし、これはJavaの内部でメモリを有効利用するために作られた仕組みであって、==演算子が値の比較を行っているわけではない。

Str3では明示的にnew演算子を用いてStringオブジェクトを生成し値を代入しているので、生成されたオブジェクトの実体の共有は行われない。そのため値は等しくないというfalseが返ってくる。

同様に、str4とstr5には、同じ「朝日」という文字列が代入されているがstr4は最初から「朝日」という文字列を代入。str5はstr1の実体に「日」という文字を連結し代入しているため、比較した結果はfalseとなる。

equalsメソッドの場合

一方、Stringクラスの.equalsメソッドを使用した場合は、実体である値を比較しているので、どのパターンでも正しく比較されtrueの結果が返っている。 

文字列と文字列の比較は、分岐処理の際の条件として使われることが多い。

その際、比較演算子を正しく使用しないと正しい結果が返ってこなくなる。

また、.equalsメソッドを使用する場合に気を付けるべきことは、比較するStringクラスの文字列にnullが入っていないかをチェックすることを忘れないようにすることだ。実行した際にnullが入ってくるとプログラムは例外を発生させそこで動かなくなってしまう。 

まとめ

このページではJavaでの文字列の比較について、細かいところも含めてお伝えした。いかがだっただろうか?

参照型であることから、このように少し特殊な動きをする。初心者であっても、覚えておいた方がいい知識だ。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する