- ベストアンサー
Javaの文字列の大小比較についてです。
Javaでは、文字列の大小比較をする時、StringのcompareToを使用しまが… compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか? また、compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問1 compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか? 答え String というのは char 配列を所有するクラスですので、 char 型に直すことはありません。 String のコンストラクタで byte 配列を char 配列に変換することはあります。 String#compareTo では所有する char 配列と引数で指定した String の char 配列を比較していると src.zip/java/lang/String.java にあります。(環境 jdk1.6.0_23) public int compareTo(String anotherString) { int len1 = count; int len2 = anotherString.count; int n = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; if (i == j) { int k = i; int lim = n + i; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2; } k++; } } else { while (n-- != 0) { char c1 = v1[i++]; char c2 = v2[j++]; if (c1 != c2) { return c1 - c2; } } } return len1 - len2; } 質問2 compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか? 答え 処理速度は変わりますが、単純な処理なので有意な差は期待できないと思います。
その他の回答 (1)
- askaaska
- ベストアンサー率35% (1455/4149)
> compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか? ダウンロードしてきたJDK(J2sdk)の中に ソースが入っているはずだから見て診るといいわ。 > compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか? 同じ実装なら同じ。 違えばその処理次第。