AMG Solution

Javaで値の比較がしたい? 数値、日付、文字列のcompareToを使ってみよう!

比較メソッド紹介
feels

こんにちは。関口です。
 
今回はJava初心者向けにcompareToメソッドの基本的な使い方と、よくある間違いを紹介していきます。

目次

  1. compareToメソッドとは
  2. 基本的な使い方
  3. Integer型の比較
  4. BigDecimal型の比較
  5. Date型の比較
  6. Calendar型の比較
  7. String型の比較
  8. こんなこともできます
  9. よくある間違い
  10. まとめ

compareToメソッドは、2つの値を比較する際に使用します。
 
似たメソッドとして、「equals」「compare」「compareToIgnoreCase」がありますが、今回の記事では触れません。興味のある方は調べてみてください!

compareToは、次のように記載します。
 

比較値A.compareTo(比較値B)

結果は次のようになります。
 

比較値A(左側の値)が比較値B(右側の値)よりも大きい場合は1以上の正数値。
比較値A(左側の値)が比較値B(右側の値)よりも小さい場合は負の数値。
比較値A(左側の値)が比較値B(右側の値)と等しい場合は0。

あえて言うことでもないですが、比較値Aと比較値Bは同じ型でなければエラーになります。
 
それでは実際に、比較値の型による結果の違いを見てみましょう。

どんなに差がある数値を比較しても、結果は1、0、-1のいずれかになります。

実行結果

どんなに差がある数値を比較しても、結果は1、0、-1のいずれかになります。

実行結果

どんなに差がある日付を比較しても、結果は1、0、-1のいずれかになります。

実行結果

どんなに差がある日付を比較しても、結果は1、0、-1のいずれかになります。

実行結果

Unicode値の順序差により、結果が返却されます。今まで紹介した数値や日付の比較と違い、1、0、-1のどれかではなく順序の差分値が返ります。

実行結果

Date型をString型に変換(フォーマット)して比較することもできます。

実行結果

日付型で年月日だけで比較したい場合に便利ですね!

Calendar型の時分だけで比較したい場合。

実行結果

期待していた結果と異なりますね。なぜでしょうか?
 
strCal1.compareTo(strCal2) の結果は「8」となります。1文字目の「1」と「9」を比べた結果になっていることがわかりますね。次の場合はどうなるでしょうか。

実行結果

1文字目が一致する場合は、2文字目の「1」と「3」を比べた結果になっていることがわかりますね。String型の数値の場合、先頭から順に大小の比較を行うということを覚えておきましょう!

いかがでしたでしょうか。
 
なんとなくの知識で作ってしまうと、場合によっては誤った動きになってしまいます。正しい知識を身につけて、楽しくJavaを使っていきましょう!
 
 
 
 
《関連記事》

feels recruit

SEKIGUCHI'S BLOG

関口の記事

関口の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

feelsでSFA・CRM
はじめました。
LOADING