今天看代码,发现有的 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 都加上 {}

source: Java if else不加花括号{}的用法