1. 程式人生 > >java編譯優化

java編譯優化

ole 識別 編譯期 del flag 之前 折疊 獲取 jvm

#java編譯器對`String常量表達式`的優化:
- 1.String+String 可以被編譯器識別為常量表達

String a="ab" ;

String b="a"+"b";//編譯後:b="ab"

System.out.println(a==b);//true

分析:
編譯器將"a"+"b"當做常量表達式,在編譯時期進行優化,直接取"ab". 在運行時期
並沒有創建新的對象,而是從jvm字符串常量池中獲取之前已經存在的"ab"對象.

- 2.String+基本類型 可以被編譯器識別為常量表達式



String a="a1";
String b="a"+1; //"a1"
String c="a"+true;//"atrue"
String d="a"+3.14;//"a3.14"

#java編譯器對`常量`優化:
* 它是編譯時的一項優化技術,將代碼的常量計算在編譯期完成,節約了運行時的計算量.

1.常量替換
//編譯前:
final int x=10;
int y=x;

//編譯後
int x=10;
int y=10;//編譯時,常量替換了


2.數學恒等式的模式匹配替換


//編譯前:
int x=10+10;

//編譯後
int x=20;//編譯時,模式匹配替換了


3.常量折疊

//編譯前:
boolean flag=true||(a || b && c);

//編譯後
boolean flag=true;//編譯時,常量折疊了





java編譯優化