繁体   English   中英

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

[英]Is String.length() invoked for a final String?

快速安心,让您高枕无忧:
考虑以下因素

final String str = "This is the end";

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

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

str.length()在运行计算。 final表示不能更改引用的值。 它与字符串本身无关。

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

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

但是,在jit编译期间可能会内联方法调用

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

public int length() {
    return count;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM