-PR-
  • すぐに回答を!
  • 質問No.6898439
解決
済み

Javaの文字列の大小比較についてです。

  • 閲覧数1401
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/7)

Javaでは、文字列の大小比較をする時、StringのcompareToを使用しまが…

compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか?
また、compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 62% (109/174)

質問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を使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?
答え 処理速度は変わりますが、単純な処理なので有意な差は期待できないと思います。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 34% (1450/4144)

> compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか? ダウンロードしてきたJDK(J2sdk)の中に ソースが入っているはずだから見て診るといいわ。 > compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか? 同じ実装なら同じ。 違えばその処理次第。
> compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか?
ダウンロードしてきたJDK(J2sdk)の中に
ソースが入っているはずだから見て診るといいわ。

> compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?
同じ実装なら同じ。
違えばその処理次第。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ