为了账号安全,请及时绑定邮箱和手机立即绑定

‘if’语句末尾的分号

‘if’语句末尾的分号

三国纷争 2019-06-15 13:49:19
‘if’语句末尾的分号今天,在搜索了半个小时的bug之后,我发现可以在if语句之后添加分号,而不是代码,如下所示:if(a == b);// Do stuff这基本上意味着不管a等号b或者不是,而且if声明毫无意义。为什么Java不给我一个错误?在什么情况下,这将是有用的?
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

为什么会发生这种事?

Java语言规范说:

空语句

空语句什么也不做。

EmptyStatement:
    ;

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

这实际上意味着,如果a=b,则要执行空语句。

if(a == b);

你应该怎么做:

这个问题有两个主要的解决办法:

  1. 您可以通过使用代码格式化程序和内部的内容来避免空语句的问题。if带着{}..通过这样做,您的空语句将更具可读性。

    if(a == b){
      ;}
  2. 还可以检查用于静态代码分析的工具,如:


    他们可以立即突出这类问题。

我建议将这两种解决方案结合起来。


查看完整回答
反对 回复 2019-06-15
?
PIPIONE

TA贡献1829条经验 获得超9个赞

一个可能的用例:

if (a==b);else {
  // Do something}

不好,但有可能。

尽管如此,我仍然认为Java规范应该不允许一个空的if.


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 749 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号