java - 为什么在不带大括号的情况下定义变量时会出现编译器错误?

标签 java javac

为什么Java编译器会在下面的代码中提示语法错误?

  1 public class Test {
  2   public static void main(String[] args) {
  3     if (true)
  4       int b = 0;
  5   }
  6 }

Test.java:4: '.class' expected
      int b = 0;
          ^
Test.java:4: not a statement
      int b = 0;
      ^
Test.java:4: illegal start of expression
      int b = 0;
            ^
Test.java:4: ';' expected
      int b = 0;
             ^
4 errors

最佳答案

Java 不允许您在没有大括号的 if 语句中定义变量,因为它永远不会被使用(因为没有其他行可以引用它 - 它将超出范围,因此不可用一旦你点击下一行。)

如果你在 if 语句两边加上大括号,它会编译正常:

public class Test {
   public static void main(String[] args) {
       if (true) {
           int b = 0;
       }
   }
}

关于java - 为什么在不带大括号的情况下定义变量时会出现编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267906/

相关文章:

java - 无法从 T 转换为整数

java - 命令行中的引号

java - 如何将对象列表存储到内存中以供以后使用

java - 计时每个文件用 ant 编译需要多长时间

Java Object[] 和缓存分级

java - 如何在 ant 的 build.xml 中设置 -Dfile.encoding?

Javassist - 将标志传递给编译器

com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass 处的 Javac 失败

java - Hadoop 2.2.0 源码打包

Java Spring 项目结构 - 未检测到 Controller