-PR-
解決済み

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

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

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 35% (1451/4145)

> compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか?
ダウンロードしてきたJDK(J2sdk)の中に
ソースが入っているはずだから見て診るといいわ。

> compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?
同じ実装なら同じ。
違えばその処理次第。


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ