猿问

‘if’语句末尾的分号

‘if’语句末尾的分号

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

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

这基本上意味着不管a等号b或者不是,而且if声明毫无意义。为什么Java不给我一个错误?在什么情况下,这将是有用的?


三国纷争
浏览 750回答 3
3回答

慕妹3146593

为什么会发生这种事?Java语言规范说:空语句空语句什么也不做。EmptyStatement:     ;空语句的执行总是正常完成的。这实际上意味着,如果a=b,则要执行空语句。if(a == b);你应该怎么做:这个问题有两个主要的解决办法:您可以通过使用代码格式化程序和内部的内容来避免空语句的问题。if带着{和}..通过这样做,您的空语句将更具可读性。if(a == b){   ;}还可以检查用于静态代码分析的工具,如:他们可以立即突出这类问题。发现虫格子式PMD我建议将这两种解决方案结合起来。

PIPIONE

一个可能的用例:if (a==b);else {   // Do something}不好,但有可能。尽管如此,我仍然认为Java规范应该不允许一个空的if.
随时随地看视频慕课网APP

相关分类

Java
我要回答