今天看代碼,發現有的 if else語句後面沒有花括號 {}
final void lock(){
if(compareAndSetState(0,1))
setExclusiveOwnerThread(Thread.currentThread());
else
acquire(1);
}
下面談一下,加不加 花括號 {} 的 區別和影響
1 只有一對 if else 時,後面不加{},就近原則,只控制第一句
- 不加 {}
if (1==2)
x=1;y=2;z=3;
編譯後
if (1==2)
{x=1};y=2;z=3;
當1!=2時,y=2;z=3;仍執行
- 加{}
if (1 == 2)
{ x=1;y=2;z=3;}
當1!=2時,都不執行
- 總結
後面不加{}時,就近原則,只控制第一句
2 多個 if else時,if else按照就近匹配的原則進行匹配,這時候,不加{},很容易出錯
實際想要的效果
if(Character.isLowerCase(c)){
if(count[c-'a']==1)
return i;
}
else{
if(count[c-'A'+26]==1)
return i;
}
如果不加 {},實際行 else匹配的是第二個 if,程序出錯
if(Character.isLowerCase(c))
if(count[c-'a']==1)
return i;
else
if(count[c-'A'+26]==1)
return i;
3 總結
if … else… 能夠不加 {} 的情況
- 只有一對 if else語句
- if else 後面只跟着一個判斷語句
爲了防止出錯,建議代碼規範化,if else 都加上 {}