如果块变量定义给出错误,则使用大括号

if(true)
     String str;

嗨,上面的代码给出了这样的错误:

这条线上有多个标记
- str不能解析为变量
- 令牌“String”上的语法错误,AssignmentOperator在此令牌之后

为什么有这样的错误? 当然我知道str定义后将无法访问。 但是java并没有给出这样的解释。 对我来说似乎很奇怪。


这是因为你在一个受保护的条件块中放置了一个声明。 但是,根据Java语法,Java声明不被视为语句。

声明可以与作为花括号中的块的一部分的语句混合使用,但是单个声明不被视为声明。 这非常合理,因为您声明的变量不可用:如果您想为其副作用进行声明初始化,例如

if (true)
    String str = someFunction();

你可以使用一个表达式语句而不用声明一个你无法使用的变量:

if (true)
    someFunction();

因此,如果你自己在一个条件或循环中声明了一个声明,编译器肯定你犯了一个错误,并产生一个错误信息来提醒你这个问题。

链接地址: http://www.djcxy.com/p/59501.html

上一篇: braces if block variable definition gives an error

下一篇: HashMap and int as key