当前位置: 首页 > 知识库问答 >
问题:

为什么java if语句以分号[重复]结尾时失败

朱翔
2023-03-14
String name = null;
String value = null;

if(name != null && value != null);
{
    System.out.println("Values not null");
}

if语句以结尾,这是我的错误,值not null被打印出来,即使很明显这两个值都为null。有人能解释为什么吗?

共有1个答案

景胜涝
2023-03-14

这个分号结束了一个语句(一个空的语句),因此编译器将代码转换为如下所示:

if(name != null && value != null)
{
  //nothing here
}
{
  System.out.println("Values not null");
}

换句话说,如果如果表达式为true,则执行空代码块。然后,无论if是否为true,运行库都会继续并运行包含system.out的块。空语句仍然是语句,因此编译器接受您的代码。

另一个可能发生这种错误的地方:

for(int i = 0; i < 10; ++i);
{
  System.out.println("Y U always run once?");
}
boolean stop = false;
while(!stop);
{
  //...
  stop = true;
}
 类似资料:
  • 问题内容: 我在处理应用程序时犯了一个编码错误,它是对null引用的测试。我花了几个小时才发现问题所在,但是我不明白的是为什么代码如此表现。 if语句以结束,这是我的错误,即使很明显两个值都为null ,也将打印出来。有人可以解释为什么吗? 问题答案: 该分号结束了一条语句(一个空的语句),因此编译器将您的代码翻译为以下内容: 换句话说,如果expression是,它将执行空的代码块。然后,无论是

  • 问题内容: 今天,在搜索错误半小时之后,我发现可以在if语句后加上分号而不是代码,如下所示: 从根本上讲,这意味着无论是否相等,都将完成工作,并且该语句毫无意义。Java为什么不给我一个错误?有什么情况会有用吗? 问题答案: Why does it happen? Java语言规范说: 空话 空语句不执行任何操作。 空语句的执行总是正常完成 从本质上讲,这意味着你要在a == b时执行空语句 Wh

  • 为什么我在pycharm中会出现这样一个错误(请参见linting)说“期望语句结束”? 我对python非常陌生。

  • 问题内容: 我不小心写了一个Java语句,结尾有两个分号。Java编译器不显示任何错误,它可以运行。 码: 出于学习目的,我尝试在分号后添加不同的字符,并且Java编译器已将编译时错误显示为 令牌“)”上的语法错误,请删除此令牌 。 这个说法: 为什么Java将分号和其他字符视为不同? 问题答案: 因为双分号不会被视为双分号,而是会被视为分号和空语句。空的语句不执行任何操作,这不是错误。

  • 我正在学习Java认证,在一次模拟考试中,我看到了一个非常奇怪的for-loop实现。该练习显示了以下语法: 一开始,我认为这是一个语法错误,因为我一直知道“for循环”的语法需要大括号,或者,如果只有一条指令需要迭代,我们可以跳过大括号,并在循环之后将语句对齐。-因为我以前没见过以分号“;”结尾的For循环-- 然后我试图找到一些关于它的留档,但不幸的是,我找不到任何解释为什么是合法代码声明。仅