【问题标题】:Java if statment ending with a semi-colim [duplicate]Java if语句以分号结尾[重复]
【发布时间】:2019-11-03 17:44:26
【问题描述】:

我在使用 jdk 13.0 的 Java 中遇到了以下奇怪行为:

String foo = "Something";
String bar = "Other";

if (foo.equals(bar));
{
   System.out.println("Face palm");
}

遗憾的是,以上比较成功并且“掌心”被打印出来了。 导致这种行为的原因是 if 语句末尾存在 分号

这样做的正确方法是:

String foo = "Something";
String bar = "Other";

if (foo.equals(bar))
{
   System.out.println("Face palm");
}

谁能解释一下为什么 Java 会这样?

这可能只是编译器未捕获的语法错误吗?

【问题讨论】:

  • if (foo.equals(bar)); 等价于if (foo.equals(bar)) {}
  • 一些 IDE 可以选择指示空语句(作为警告甚至是错误)
  • 它本身并不是真正的语法 errorif(以及whilefor)需要一个声明 来关注它们。碰巧; 本身就是一个有效的声明。 if/for/while 有一个空语句的用法(如果表达式有副作用),但它们有点令人困惑。

标签: java syntax


【解决方案1】:

这并不意味着比较成功 - 基本上你只是创建了空体的if语句,然后打开了本地匿名代码块(从{开始)

在这种情况下,Face palm 值将始终打印出来 - 无论条件结果是什么

在这里阅读更多:

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 2012-12-16
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多