Java if else不加花括號{}的用法


今天看代碼,發現有的 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 都加上 {}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章