1 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
#java編譯器對(duì)`String常量表達(dá)式`的優(yōu)化:
- 1.String+String 可以被編譯器識(shí)別為常量表達(dá)
String a="ab" ;
String b="a"+"b";//編譯后:b="ab"
System.out.println(a==b);//true
分析:
編譯器將"a"+"b"當(dāng)做常量表達(dá)式,在編譯時(shí)期進(jìn)行優(yōu)化,直接取"ab". 在運(yùn)行時(shí)期
并沒有創(chuàng)建新的對(duì)象,而是從jvm字符串常量池中獲取之前已經(jīng)存在的"ab"對(duì)象.
- 2.String+基本類型 可以被編譯器識(shí)別為常量表達(dá)式
String a="a1";
String b="a"+1; //"a1"
String c="a"+true;//"atrue"
String d="a"+3.14;//"a3.14"
#java編譯器對(duì)`常量`優(yōu)化:
* 它是編譯時(shí)的一項(xiàng)優(yōu)化技術(shù),將代碼的常量計(jì)算在編譯期完成,節(jié)約了運(yùn)行時(shí)的計(jì)算量.
1.常量替換
//編譯前:
final int x=10;
int y=x;
//編譯后
int x=10;
int y=10;//編譯時(shí),常量替換了
2.數(shù)學(xué)恒等式的模式匹配替換
//編譯前:
int x=10+10;
//編譯后
int x=20;//編譯時(shí),模式匹配替換了
3.常量折疊
//編譯前:
boolean flag=true||(a || b && c);
//編譯后
boolean flag=true;//編譯時(shí),常量折疊了
添加回答
舉報(bào)