一尘不染

Java 'if'语句结尾的分号

java

今天,在搜索错误半小时之后,我发现可以在if语句后加上分号而不是代码,如下所示:

if(a == b);
// Do stuff

从根本上讲,这意味着无论是否a相等b,都将完成工作,并且该if语句毫无意义。Java为什么不给我一个错误?有什么情况会有用吗?


阅读 1264

收藏
2020-02-26

共1个答案

一尘不染

Why does it happen?

Java语言规范说:

空话

空语句不执行任何操作。

EmptyStatement:
    ;

空语句的执行总是正常完成

从本质上讲,这意味着你要在a == b时执行空语句

if(a == b);

What should you do:

此问题有两种主要解决方案:

你可以通过使用代码格式化和周围里面的东西避免空语句的问题if有{和}。这样,你的空语句将更具可读性。

if(a == b){
  ;
}

你还可以检查用于静态代码分析的工具,例如:

  • Findbugs
  • Checkstyle
  • Pmd

他们可以立即突出显示诸如此类的问题。

我建议结合两种解决方案。

2020-02-26