Java字符串类中length()函数的复杂度是多少?

Java字符串类中length()函数的复杂度是多少?,java,time-complexity,Java,Time Complexity,是O(n)还是O(1)(在字符串分配到对象期间,通过在私有变量中保存长度) 如果是O(n),是否意味着以下代码的复杂性是O(n^2) for(inti=0;i它是O(1),因为String实例已经知道了长度 在JDK1.6中,它是可见的 public int length() { return count; } 更新 重要的是要理解为什么他们可以缓存count的值,并继续为count使用相同的值。原因在于他们在设计字符串时做出了一个伟大的决定,它的不变性。复杂性是O(1)因为字符串类

是O(n)还是O(1)(在字符串分配到对象期间,通过在私有变量中保存长度)

如果是O(n),是否意味着以下代码的复杂性是O(n^2)

for(inti=0;i它是
O(1)
,因为
String
实例已经知道了长度

在JDK1.6中,它是可见的

public int length() {
    return count;
}

更新


重要的是要理解为什么他们可以缓存
count
的值,并继续为
count
使用相同的值。原因在于他们在设计
字符串时做出了一个伟大的决定,它的不变性。

复杂性是
O(1)
因为
字符串
类的长度作为
字段
。它不是O(n^2)。

字符串内部维护字符的数组,数组的长度是数组对象的属性,因此O(1)作为对属性的简单读取。

在Java中,任何字符串都由
final
数组备份。因此,只返回数组长度很简单。因此,它是
O(1)
复杂性。如果您在代码中考虑

for(int i=0; i<s.length()-1;i++){
    //some code here!
}

for(int i=0;如果i java是开源的,你可以自己检查;@RamonBoza实际上OpenJDK是开源的。java是一个规范,没有内在的源代码。数组对象是什么意思?我已经提到了
字符数组
!java中的数组是一个对象。
for(int i=0; i<s.length()-1;i++){
    //some code here!
}