java - i-​- 在 while 循环中是否特殊?

标签 java

我正在研究一个 while 循环,它的 i-- 减少,但我预计 10 会使用两次。在我看来,我们在开始时使用 10,然后 while 循环开始。我们写 10 因为 System.out.println(i);然后我们看到我——; .. 所以我认为我们再次使用 10,然后将其减少到 9。您能解释一下为什么输出返回如下吗?

int i=10;

 while(i>1){

  System.out.println(i);

  i--;

 }

预期输出是 10 10 9 8 7 6 5 4 3 2

但是它给出了 10 9 8 7 6 5 4 3 2

最佳答案

您的误解:这些修复前/修复后操作仅影响“当前”表达式。例如,他们没有某些封闭循环上下文的概念。您假设 --i 会以某种方式神奇地影响 while 条件。事实并非如此。请参阅here供进一步阅读。

您的代码如下:

  1. i = 10
  2. i > 10 ...确定:进入循环
  3. 打印我
  4. i = i -1
  5. 转到2

换句话说:如果您想看到打印输出中的差异,请将代码更改为:

System.out.println(--i);
System.out.println(i--);
例如。

在您的代码中,该操作位于其自己的行。因此,该行可以写为 i----i、或 i = i -1i -= 1..没关系。该表达式递减 i,并存储新值。再次强调:要看到不同的结果,您需要直接使用该操作的结果!

关于java - i-​- 在 while 循环中是否特殊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55729496/

相关文章:

java - 标准 Java 项目描述格式

java - 为什么 Java 允许将字符串文字分配给 String 对象?

java - 如何找到内存泄漏的根源?

Java 通用列表给了我警告

java - 是否可以通过 MS Access/ExcelP 等程序访问嵌入式 Derby 数据库进行分析

java - 当光标指向特定行时,如何获取 JTable 中的行和列?

java - Spring roo - 如何安装 spring surf

java - 访问 JAR 资源

java - 从 ArrayList 选定值中选择下一个和上一个元素

java - 如何在Elasticsearch中以编程方式(在Java中)检索词 vector ?