为什么这不是语法错误/那是什么语法

时间:2017-01-12 14:26:27

标签: java syntax

我很难找到重复或解释,因为我不知道语法的名称。

今天早些时候,我写了一段包含额外;的代码:

if (condition); {
    try {
        // something
    } catch (Exception e) {
        // something
    }
}

我知道if语句被;中断了。我感兴趣的是块

{
    // something
}

该块({})如何在没有前导iffor,...的情况下被调用,我可以将它用于什么?

3 个答案:

答案 0 :(得分:3)

您可以自行使用{}个屏障,但不一定需要ifelse或其他关键字。

此类块对于构造代码很有用,或者,例如,限制局部变量的范围,例如:

{
     int myVar = ...;
}

myVar将无法在块外显示/访问,因此您可以更轻松地阅读此代码,因为您不必在块外考虑myVar

答案 1 :(得分:3)

它被称为(匿名)代码块

有关该功能动机的SO帖子。

Anonymous code blocks in Java

答案 2 :(得分:1)

这只是一个复合语句。您的拼写错误不是语法错误的原因是if语句根据定义后跟完全一个语句。这可能是一个空语句(;),一个简单语句(x = x + 1)或复合语句({ ... })。

复合语句本身(而不是用作iffor等的主体)通常用于定义一个范围,在该范围内可以使用精确的生命定义变量跨度。

// No foo out here
{
   int foo;
   ...
}
// No foo here either