当前位置: 首页 > 面试题库 >

Java 'if'语句结尾的分号

长孙阳嘉
2023-03-14
问题内容

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

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

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


问题答案:

Why does it happen?

Java语言规范说:

空话

空语句不执行任何操作。

EmptyStatement:
    ;

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

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

if(a == b);

What should you do:

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

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

if(a == b){
  ;
}

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

  • Findbugs
  • Checkstyle
  • Pmd

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

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



 类似资料:
  • 问题内容: 我在处理应用程序时犯了一个编码错误,它是对null引用的测试。我花了几个小时才发现问题所在,但是我不明白的是为什么代码如此表现。 if语句以结束,这是我的错误,即使很明显两个值都为null ,也将打印出来。有人可以解释为什么吗? 问题答案: 该分号结束了一条语句(一个空的语句),因此编译器将您的代码翻译为以下内容: 换句话说,如果expression是,它将执行空的代码块。然后,无论是

  • 为什么我在pycharm中会出现这样一个错误(请参见linting)说“期望语句结束”? 我对python非常陌生。

  • if语句以结尾,这是我的错误,被打印出来,即使很明显这两个值都为null。有人能解释为什么吗?

  • 问题内容: 我不小心写了一个Java语句,结尾有两个分号。Java编译器不显示任何错误,它可以运行。 码: 出于学习目的,我尝试在分号后添加不同的字符,并且Java编译器已将编译时错误显示为 令牌“)”上的语法错误,请删除此令牌 。 这个说法: 为什么Java将分号和其他字符视为不同? 问题答案: 因为双分号不会被视为双分号,而是会被视为分号和空语句。空的语句不执行任何操作,这不是错误。

  • 本文主要学习 Go 语言中的分支语句。一共要介绍的有两个,分别式 if…else 和 switch…case。他们二者在 Go 语言中都做了新的功能拓展。 Tips:其中还有一个分支语句select…case我们将在Go语言的通道中介绍。 1. if…else 在 Go 语言中 if 关键字的作用和其它大部分语言相同,是用于测试某个布尔表达式或布尔值是否为真的。若为真则执行if之后{}中的语句,否