繁体   English   中英

如果块变量定义给出错误,则为非括号

[英]non-braces if block variable definition gives an error

if(true)
     String str;

嗨,上面的代码给出了一个错误:

此行有多个标记
- str无法解析为变量
- 令牌“String”上的语法错误,此令牌后预期AssignmentOperator

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

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

允许声明与语句混合,作为用大括号括起来的块的一部分,但是单个声明不被视为语句。 这是完全合理的,因为您声明的变量不可用:如果您想要为其副作用进行声明初始化,例如

if (true)
    String str = someFunction();

您可以使用表达式语句而不声明无论如何都无法使用的变量:

if (true)
    someFunction();

因此,如果您在条件或循环中单独放置声明,则编译器确定您犯了错误,并生成错误消息以提醒您该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM