String.length()是否为最终的String调用?

时间:2012-08-13 08:18:22

标签: java string final

快速安心只是为了让您高枕无忧:
考虑以下

final String str = "This is the end";

在运行时评估str.length()还是在字节码中将其硬编码为15?

3 个答案:

答案 0 :(得分:13)

str.length()String constructor中计算并保存在private final int count;中,str.length()只返回count变量。我刚刚在这里检查了来源http://www.docjar.com/html/api/java/lang/String.java.html

答案 1 :(得分:12)

str.length() 在运行时进行评估。 final表示无法更改引用的值。它与字符串本身无关。

但是,如果你查看String的源代码,你会看到length()返回一个字段的值,所以不进行任何计算,值只是读取...

答案 2 :(得分:2)

在字节码中,将评估方法。

但是,方法调用可能会在jit compilation

期间内联

String.length()方法的代码如下:

public int length() {
    return count;
}

我不认为对字符串的引用被声明为final的事实与此情况下的内联有任何关系。