1

重複の可能性:
Javaでは、文字列xの場合、s.length()の実行時コストはいくらですか?O(1)またはO(n)ですか?

StringクラスのlengthメソッドはJavaでどの程度正確に機能しますか?

それは線形時間のforループですか、それとも一定時間になるように長さを追跡するフィールドがありますか?

4

4 に答える 4

3

ここに示すように、aの長さはStringフィールドとして保持されます:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String .length%28%29

于 2012-07-15T11:58:36.530 に答える
1

長さを格納するフィールドがあります。文字列は不変であるため、「追跡する」必要はありません(変更される可能性があることを意味します)。

于 2012-07-15T11:58:17.287 に答える
0

Stringはデータをchar[]配列に格納しますが、Stringがその配列の一部のみを使用する必要がある場合があります。そのため、そのフィールドには、そのint offset配列の開始インデックス()と、String(int count)の生成に使用する長さが格納されます。メソッドはフィールドlength()の値を返しますcount

于 2012-07-15T12:04:31.177 に答える
0

文字列は不変であるため、文字列オブジェクトが作成されると、その長さはその文字列オブジェクトのインスタンス変数として保存されます。

于 2012-07-15T12:04:43.967 に答える