java - 无法在 Java 中完成这项任务

标签 java

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

int i=0;
i=i++;
i=i++;
i=i++;
System.out.println(i);

它打印出零。

最佳答案

i++ 是后增量 ( JLS 15.14.2 )。它递增 i,但表达式的结果是递增 之前的 i 的值。将此值分配回 i 实际上会保持 i 的值不变。

像这样分解:

int i = 0;
int j = i++;

在这种情况下很容易看出为什么 j == 0。现在,我们将左侧替换为 i,而不是 j。右侧的值仍然是 0,这就是您在代码段中得到 i == 0 的原因。

关于java - 无法在 Java 中完成这项任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377145/

相关文章:

java - 如何在 spring 中为 log4j2 创建自定义 appender

java - Axis Java Web 服务 : connect to database on startup

java - 为什么即使我没有运行错误,应用程序也不显示任何内容?

java - 检查数字是否是双数组中的中位数

java - 如何将库添加到 Android 项目?

java - Java 中泛型的静态多态性

Java如何响应HttpExchange

java - 为什么我在 Spring 中提交表单后得到 null 对象?

java - JAXB - 解码 XML 文件

java - 如何避免每次进入时都重新加载 Activity ?