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 .长度%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 回答