JavaのcompareToの使い方を紹介!|compareToメソッドで様々な比較をしよう

- システム
エンジニア - JavaのcompareToはどのような使い方をするのでしょうか。
- プロジェクト
マネージャー - compareToメソッドは、値や文字列の比較のために使用します。値や文字列が等しいか、どちらが大きいかを判断できます。
JavaのcompareToの使い方とは?
今回は、JavaのcompareToメソッドの使用方法について説明します。
compareToメソッドは、値や文字列の比較のために使用します。
値や文字列が等しいか、どちらが大きいかを判断できます。
JavaのcompareToの使用方法に興味のある方はぜひご覧ください。
基本的な使い方
compareToメソッドは以下のような使い方をします。
1
2
3
|
変数1.compareTo(変数2)
|
実行結果は以下のようになります。
負値 : 変数1 < 変数2
0 : 変数1と変数2が等しい
正値 : 変数1 > 変数2
このように、値や文字列が等しいか、どちらが大きいかを判断できます。
Integer型の比較
Javaでは、compareToメソッドでInteger型の比較ができます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class Main {
public static void main(String[] args) throws Exception {
Integer num1 = new Integer(0);
Integer num2 = new Integer(-1);
Integer num3 = new Integer(1);
Integer num4 = new Integer(1000);
System.out.println(num1 + "".compareTo("" + num2 + "") : "" + num1.compareTo(num2));
System.out.println(num2 + "".compareTo("" + num3 + "") : "" + num2.compareTo(num3));
System.out.println(num3 + "".compareTo("" + num4 + "") : "" + num3.compareTo(num4));
System.out.println(num4 + "".compareTo("" + num4 + "") : "" + num4.compareTo(num4));
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
0.compareTo(-1) : 1
-1.compareTo(1) : -1
1.compareTo(1000) : -1
1000.compareTo(1000) : 0
|
このように、値が等しいか、どちらが大きいかを判断できます。
String型の比較
Javaでは、compareToメソッドでString型の比較ができます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class Main {
public static void main(String[] args) throws Exception {
String str1 = ""a"";
String str2 = ""b"";
String str3 = ""A"";
String str4 = ""aa"";
System.out.println(str1 + "".compareTo("" + str2 + "") : "" + str1.compareTo(str2));
System.out.println(str2 + "".compareTo("" + str3 + "") : "" + str2.compareTo(str3));
System.out.println(str3 + "".compareTo("" + str4 + "") : "" + str3.compareTo(str4));
System.out.println(str4 + "".compareTo("" + str4 + "") : "" + str4.compareTo(str4));
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
a.compareTo(b) : -1
b.compareTo(A) : 33
A.compareTo(aa) : -32
aa.compareTo(aa) : 0
|
String型の場合、文字列が辞書的に前に登場するか後に登場するかを評価します。
“”a””は””b””よりも前に登場するので負の値を返すということです。
compareToIgnoreCaseメソッドを使用すれば、文字列の大小を無視して比較します。
このように、文字列が等しいか、どちらが先に辞書に登場するかを判断できます。
Date型の比較
Javaでは、compareToメソッドでDate型の比較ができます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import java.util.Date;
public class Main {
public static void main(String[] args) throws Exception {
Date date1 = new Date(2020, 9, 7, 21, 45, 22);
Date date2 = new Date(2020, 9, 7, 21, 45, 24);
Date date3 = new Date(2020, 9, 7, 21, 45, 22);
System.out.println(date1 + "".compareTo("" + date2 + "") : "" + date1.compareTo(date2));
System.out.println(date2 + "".compareTo("" + date3 + "") : "" + date2.compareTo(date3));
System.out.println(date3 + "".compareTo("" + date1 + "") : "" + date3.compareTo(date1));
}
}
|
実行結果は以下のようになります。
1
2
3
|
Thu Oct 07 21:45:22 UTC 3920.compareTo(Thu Oct 07 21:45:24 UTC 3920) : -1
Thu Oct 07 21:45:24 UTC 3920.compareTo(Thu Oct 07 21:45:22 UTC 3920) : 1
Thu Oct 07 21:45:22 UTC 3920.compareTo(Thu Oct 07 21:45:22 UTC 3920) : 0
|
このように、ミリ秒までの日付が等しいか、どちらが大きいかを判断できます。
BigDecimal型の比較
Javaでは、compareToメソッドでBigDecimal型の比較ができます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) throws Exception {
BigDecimal bigDecimal1 = new BigDecimal(""0"");
BigDecimal bigDecimal2 = new BigDecimal(""1.0"");
BigDecimal bigDecimal3 = new BigDecimal(""1.00"");
System.out.println(bigDecimal1 + "".compareTo("" + bigDecimal2 + "") : "" + bigDecimal1.compareTo(bigDecimal2));
System.out.println(bigDecimal2 + "".compareTo("" + bigDecimal3 + "") : "" + bigDecimal2.compareTo(bigDecimal3));
System.out.println(bigDecimal3 + "".compareTo("" + bigDecimal1 + "") : "" + bigDecimal3.compareTo(bigDecimal1));
System.out.println(bigDecimal2 + "".equals("" + bigDecimal3 + "") : "" + bigDecimal2.equals(bigDecimal3));
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
0.compareTo(1.0) : -1
1.0.compareTo(1.00) : 0
1.00.compareTo(0) : 1
1.0.equals(1.00) : false
|
BigDecimalの小数点以下の精度が違う(1.0と1.00の)場合、compareToメソッドは等しいと判断しますが、equalsメソッドは不一致と判断します。
用途に応じて使い分けてください。
プリミティブ型の比較
Javaでは、プリミティブ型の比較にはcompareメソッドが使用できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class Main {
public static void main(String[] args) throws Exception {
byte byte1 = 1, byte2 = 2;
short short1 = 1, short2 = 2;
int int1 = 1, int2 = 2;
long long1 = 1, long2 = 2;
float float1 = 1.0f, float2 = 2.0f;
double double1 = 1.0, double2 = 2.0;
char char1 = 'a', char2 = 'b';
boolean bool1 = false, bool2 = true;
System.out.println(Byte.compare(byte1, byte2));
System.out.println(Short.compare(short1, short2));
System.out.println(Integer.compare(int1, int2));
System.out.println(Long.compare(long1, long2));
System.out.println(Float.compare(float1, float2));
System.out.println(Double.compare(double1, double2));
System.out.println(Character.compare(char1, char2));
System.out.println(Boolean.compare(bool1, bool2));
}
}
|
実行結果はすべて-1になります。
このように、Javaではプリミティブ型の比較にはcompareメソッドが使用できます。
- システム
エンジニア - Integer型やString型での比較方法など、よく理解できました。
- プロジェクト
マネージャー - JavaのcompareToメソッドをより深く理解するために、実際にソースコードで指定してみましょう。
JavaのcompareToメソッドを正しく理解しよう
いかがでしたでしょうか。
JavaのcompareToメソッドの使用方法について説明しました。
compareToメソッドは、値や文字列の比較のために使用します。
値や文字列が等しいか、どちらが大きいかを判断できます。
ぜひご自身でJavaのソースコードを書いて、理解を深めてください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)