fianl属性 java_在Java中使用Final关键字可以提高性能吗?
是的可以。下面是一個最終可以提高性能的實例:
條件編譯是一種技術,在這種技術中,代碼行不會根據特定條件編譯到類文件中。這可用于刪除生產生成中的大量調試代碼。
考慮以下幾點:public?class?ConditionalCompile?{
private?final?static?boolean?doSomething=?false;
if?(doSomething)?{
//?do?first?part.
}
if?(doSomething)?{
//?do?second?part.
}
if?(doSomething)?{
//?do?third?part.
}
if?(doSomething)?{
//?do?finalization?part.
}}
通過將DoSomething屬性轉換為最終屬性,您已經告訴編譯器,每當它看到DoSomething時,它應該按照編譯時替換規則用false替換它。編譯器的第一次傳遞將代碼更改為某物就像這樣:public?class?ConditionalCompile?{
private?final?static?boolean?doSomething=?false;
if?(false){
//?do?first?part.
}
if?(false){
//?do?second?part.
}
if?(false){
//?do?third?part.
}
if?(false){
//?do?finalization?part.
}}
一旦完成,編譯器將再次查看它,并看到代碼中有一些不可訪問的語句。由于您使用的是高質量的編譯器,所以它不喜歡所有那些無法訪問的字節碼。所以它移除了它們,你就得到了這樣的結果:public?class?ConditionalCompile?{
private?final?static?boolean?doSomething=?false;
public?static?void?someMethodBetter(?)?{
//?do?first?part.
//?do?second?part.
//?do?third?part.
//?do?finalization?part.
}}
從而減少了任何過多的代碼,或任何不必要的有條件檢查。
編輯:作為一個示例,讓我們使用以下代碼:public?class?Test?{
public?static?final?void?main(String[]?args)?{
boolean?x?=?false;
if?(x)?{
System.out.println("x");
}
final?boolean?y?=?false;
if?(y)?{
System.out.println("y");
}
if?(false)?{
System.out.println("z");
}
}}
在用Java 8編譯此代碼和用javap -c Test.class我們得到:public?class?Test?{
public?Test();
Code:
0:?aload_0???????1:?invokespecial?#8??????????????????//?Method?java/lang/Object."":()V
4:?return
public?static?final?void?main(java.lang.String[]);
Code:
0:?iconst_0???????1:?istore_1???????2:?iload_1???????3:?ifeq??????????14
6:?getstatic?????#16?????????????????//?Field?java/lang/System.out:Ljava/io/PrintStream;
9:?ldc???????????#22?????????????????//?String?x
11:?invokevirtual?#24?????????????????//?Method?java/io/PrintStream.println:(Ljava/lang/String;)V
14:?iconst_0??????15:?istore_2??????16:?return}
我們可以注意到,編譯后的代碼只包含非最終變量。x..這表明最終變量對性能有影響,至少在這個簡單的情況下是這樣的。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的fianl属性 java_在Java中使用Final关键字可以提高性能吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会议室时间预约前端_号外!会议室预约流程
- 下一篇: java美元兑换,(Java实现) 美元