Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模糊条件Java语法_Java_Syntax_If Statement_Conditional Operator - Fatal编程技术网

模糊条件Java语法

模糊条件Java语法,java,syntax,if-statement,conditional-operator,Java,Syntax,If Statement,Conditional Operator,我和一位同事刚刚发现了一种奇怪的编译语法,使用了If条件语法: if (true); { foo(); } 这里有人向我们解释这种奇怪的语法吗?Thx.对我来说,它看起来像是一个带有空主体的if语句,后跟始终执行的代码块(与if语句无关)。例如,foo是否也在此处执行: if (false); { foo(); } 我认为这与 if (true) {}; foo(); 因为if语句是在分号和foo语句刚刚放在块({})中之后结束的 …可能是旧调试的遗留问题,或者有人计划稍后编写

我和一位同事刚刚发现了一种奇怪的编译语法,使用了If条件语法:

if (true); {
  foo();
}

这里有人向我们解释这种奇怪的语法吗?Thx.

对我来说,它看起来像是一个带有空主体的if语句,后跟始终执行的代码块(与if语句无关)。例如,foo是否也在此处执行:

if (false); {
    foo();
}

我认为这与

if (true) {};
foo();
因为if语句是在分号和foo语句刚刚放在块({})中之后结束的

可能是旧调试的遗留问题,或者有人计划稍后编写条件,但从未这样做


我认为您可以安全地删除这个if语句,这样做绝对没有意义。

第一部分,
if(true)
只是一个不做任何事情的条件,以
结尾。其余部分是在新的作用域块内调用
foo()
。您应该发现总是调用
foo()

这是死代码。if块是无用的

相当于

if(doesn't matter whats here) {}
foo();

这没有真正意义,但在语法上是正确的。它也可以写成

if (true) 
{    
    // do nothing 
}
{   
    foo(); 
}
用{}环绕foo();在这种情况下没有任何意义。如果定义了变量,它将限制{}中定义的变量的范围

{
   int i=0;
   System.out.println(i);
}
{
   String i="hello";
   System.out.println(i);
}

工作正常。

正如其他人所指出的,从语法上讲,它是一个条件语句,包含一个空的执行语句(即不执行任何操作),然后是一个对foo()的调用,包含在范围括号内。foo()始终被执行。实际上,如果您在实际案例中发现了这一点,而不是在编程测试中,我怀疑以下情况之一:

  • 这是一个印刷错误,在这种情况下,它应该被纠正(当你发现代码应该做什么时)
  • 这是一段故意模糊的代码,旨在迷惑读者,在这种情况下,应该对其进行修复(替换为“foo();”),并且应该追捕并谴责肇事者
  • 它是由(糟糕的)自动化源代码生成器生成的,在这种情况下,应该对其进行注释以表明
  • 它是调试会话遗留下来的,在这种情况下,它应该恢复到进行更改之前的状态

  • 如果(我们正在打仗);{launch_all_nukes();}:DDON不管这里有什么?如果它抛出异常怎么办?e、 g.
    if(Long.parseLong(“我不是长”)1{}foo():-)