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

Java while 循环,大括号前的分号

唐增
2023-03-14

我理解无限的原因。但是为什么它是一个编译器,当我在括号里不使用变量的时候?

    int i =5;
    while(i>3); {}

这将返回一个无限循环。

    while(5>3); {}

这将返回编译器错误。为什么?

共有2个答案

刘弘济
2023-03-14

如果您在while()中定义值,例如:

(true),(false),(1==1),(5

  • 然后Java将努力检查您的语句是否会导致无限循环
    另一方面,如果有些,你在 while() 中有一些变量,比如:

(一)

然后Java不会尝试这样做。
这似乎有点懒惰,但你不能真正改变它。

石俊雄
2023-03-14

一些编程语言会试图警告您常见的错误。其中之一称为死代码。基本上,如果您有编译器可以证明永远不会运行的代码,编译器可能会礼貌地向您指出这一点。

int foo() {
  return 1;
  System.out.println("Hi :)");
}

这里的println几乎可以肯定是一个错误,因为它永远不会运行,因为它前面有一个返回。在C和大多数语言中,这是一个警告。在Java,编译器采取了更严格的立场,直接拒绝在存在死代码的情况下编译。

现在,当您在<code>之后加上分号,而</code>时,它将被视为一个空块。那么这个

while(5>3); {}

真的相当于这个吗

while (5 > 3) {}
{}

Java足够聪明,可以看到while循环是无限的,所以后面的空块是死代码,因此是错误的。

当您将<code>5</code>放入变量中时,该变量不是最终变量,因此Java拒绝尝试对此进行推理(理论上,一般来说,另一个线程或闭包或其他东西可能会在其他点改变变量的值,并使循环有限)。正如注释中所指出的,如果将i变量设置为final,则会得到相同的死代码错误。

 类似资料:
  • 我有一个家庭作业。。。代码如下。。。有几个问题要问。。。提前谢谢。Java初学者。。。如果这看起来很笨拙,请不要笑 有没有办法对我问的每个问题使用我的IF语句,而不必为每个问题更改字符串名称? 有没有办法创建一个方法(?)对于那些如果语句,所以我不必为我问的每一个问题写出来? 如果用户在10秒内没有输入答案,我想有一个定时器提示他们回答,我该怎么做?

  • 我是java的新手,我正在编写这个简短的程序,您可以在其中猜测1到10之间的数字。正确的数字存储为整数。如果您猜测较低的数字,它应该说“正确的数字较高”,如果您猜测较高,它应该说“正确的数字较低”。这是我所拥有的: 所以很明显这是行不通的,因为如果你输入一个更小的数字,它会跳到下一个数字,即使这个数字更大,它也是正确的。那么,我如何解决这个问题,让它检查两个语句呢?抱歉解释得不好。谢了。

  • 本文向大家介绍浅析python 中大括号中括号小括号的区分,包括了浅析python 中大括号中括号小括号的区分的使用技巧和注意事项,需要的朋友参考一下 python语言最常见的括号有三种,分别是:小括号( )、中括号[ ]和大括号也叫做花括号{ }。其作用也各不相同,分别用来代表不同的python基本内置数据类型。 1.python中的小括号( ):代表tuple元组数据类型,元组是一种不可变序列

  • 我试图调用一个URL使用Oracle自治数据库中的UTL_HTTP包,并获得一个ORA-06512: 正确配置了所有网络ACL等。 有问题的URL需要JSON直接在URL中,我知道这是不好的做法,但是我不能控制API。如果我删除花括号 ( {} ) 和分号 (: ), 使用UTL_HTTP请求工作,但输出不正确,因为JSON变得无效。 我尝试了使用在线编码器以及UTL_URL编码URL。 UTL_

  • 为什么我们要在while循环后面加一个分号()? 我以以下代码为例: 那么在这里做什么呢?