- 締切済み
大小比較について
comparetToの質問なのですが、この結果の 自分のage<相手のageのとき、負の値を返します。 自分のage=相手のageのとき、0を返します。 自分のage>相手のageのとき、正の値を返します。 とは、どうやって大小比較をしてるのでしょうか?具体的に教えてください?よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yuji
- ベストアンサー率37% (64/169)
ageの型は何でしょうか? Integerなら、JDK付属のInteger.javaソースのcompareTo()の 処理を見ればわかるのでは?
- zozy
- ベストアンサー率60% (20/33)
compareToメソッドでは"辞書の順番(unicodeポイント)"で大小を比較しています。 つまり、数字だけでなく"言葉"のインデックスの比較も出来るわけですね。 サンプルソースを書いたので参考にしてください public class JishoHikaku { public static void main(String[] args) { String num1="1"; String num2="2"; //"1"のunicodeポイントは49,"2"のunicodeポイントは50 //したがって49-50=1と表示され,"1"は"2"より辞書的に1小さいことがわかる System.out.println(num1+"-"+num2+"は "+num1.codePointAt(0)+"-"+num2.codePointAt(0)+"="+num1.compareTo(num2)); String alpha1="a"; String alpha2="b"; //アルファベットの比較も可能 System.out.println(alpha1+"-"+alpha2+"は "+alpha1.codePointAt(0)+"-"+alpha2.codePointAt(0)+"="+alpha1.compareTo(alpha2)); String smallAlpha="x"; String largeAlpha="X"; System.out.println(smallAlpha+"-"+largeAlpha+"は "+smallAlpha.codePointAt(0)+"-"+largeAlpha.codePointAt(0)+"="+smallAlpha.compareTo(largeAlpha)); String hira1="ち"; String hira2="え"; //ひらがな同士の比較も可能 System.out.println(hira1+"-"+hira2+"は "+hira1.codePointAt(0)+"-"+hira2.codePointAt(0)+"="+hira1.compareTo(hira2)); String kata1="チ"; String kata2="エ"; //カタカナ同士の比較もできる System.out.println(kata1+"-"+kata2+"は "+kata1.codePointAt(0)+"-"+kata2.codePointAt(0)+"="+kata1.compareTo(kata2)); //ひらがなとカタカナの区別もする System.out.println(hira1+"-"+kata1+"は "+hira1.codePointAt(0)+"-"+kata1.codePointAt(0)+"="+hira1.compareTo(kata1)); String kanji1="知"; String kanji2="恵"; //漢字同士の比較も可能 System.out.println(kanji1+"-"+kanji2+"は "+kanji1.codePointAt(0)+"-"+kanji2.codePointAt(0)+"="+kanji1.compareTo(kanji2)); String str1="知恵袋"; String str2="知恵熱"; //文字数が複数でも大丈夫 System.out.println(str1+"-"+str2+"は "+str1.compareTo(str2)); //頭から順に一文字ずつ比較する for(int i=0;i<str1.length();i++){ System.out.println((i+1)+"文字目の比較 "+str1.substring(i,i+1)+"-"+str2.substring(i,i+1)+"は "+str1.codePointAt(i)+"-"+str2.codePointAt(i)+"="+str1.substring(i,i+1).compareTo(str2.substring(i,i+1))); } } }