可能重复:
In Java, for a string x, what is the runtime cost of s.length()? Is it O(1) or O(n)?
String类的length方法究竟如何在Java中工作?
它是线性时间的for循环还是有一个字段保持长度的轨迹以便它的常数时间?
答案 0 :(得分:3)
String
的长度保留为字段,如下所示:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.length%28%29
答案 1 :(得分:1)
有一个存储长度的字段。它不需要“跟踪它”(暗示它可能会改变),因为字符串是不可变的。
答案 2 :(得分:0)
String将其数据存储在char[]
数组中,但有些情况下String应仅使用该数组的一部分,这就是为什么在其字段中存储该数组的起始索引(int offset
),以及应该用于生成String(int count
)的长度。方法length()
将返回count
字段的值。
答案 3 :(得分:0)
String是不可变的,因此当创建String对象时,其长度将存储为该String对象的Instance变量。