What is complexity of length() function in String class of Java?

后端 未结 4 1853
栀梦
栀梦 2021-02-20 07:53

Is it O(n) or O(1) (By saving length in a private variable during string allocation to the object).

if it is O(n), does it mean that the complexity of following code is

相关标签:
4条回答
  • 2021-02-20 08:23

    It is O(1) as the length is already known to String instance.

    From JDK 1.6 it is visible.

    public int length() {
        return count;
    }
    

    Update

    It is important to understand why they can cache the value of count and keep using same value for count. The reason lies in a great decision they took when designing String, its Immutability.

    0 讨论(0)
  • 2021-02-20 08:25

    In Java any String is backed up by an final array. So it is simple to just return the array length. So it is O(1) complexity. And if you think in your code

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

    s.length() is called for every iteration then you are not right. Modern compiler optimizes this type of call and changes s.length() to constant number(i.e the length of the String instance).

    0 讨论(0)
  • 2021-02-20 08:33

    String internally maintains an array of characters and length of the array is a property of array object hence O(1) as its simple reading of property.

    0 讨论(0)
  • 2021-02-20 08:33

    The complexity is O(1) Since String class have the length as a field. It's not O(n^2).

    0 讨论(0)
提交回复
热议问题