簡體   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