java循环中的前自增、后自增和自赋值

标签 java

我预计变量的后递增和预递增以及将结果分配给自身的工作方式会有所不同。但是,虽然后者按预期工作,但前者作为无限 while 循环运行。有人可以指出我在这里缺少什么吗?

int y = 0;
int z = 4;

while(y<z)
{
    System.out.println(y);
    y =y++;//this prints 0 infinite times, shouldn't why be assigned values 0,1,2,3 with each pass?
    //y =++y;//this works as expected
}

谢谢

最佳答案

如本StackOverflow answer中所述,后增量的工作原理是存储 y 的副本,加 1 并返回副本。这意味着y++的返回值不是y+1,而仍然只是y。由于您用 y++ 覆盖 y,因此您实际上只是在说 y = y

关于java循环中的前自增、后自增和自赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53920604/

相关文章:

java - 土耳其字符的小写点缀 i

java - 在 Guice 中绑定(bind)相同类型两次(例如包装器)以进行依赖注入(inject)的最佳方法是什么?

java - 检查字符串是否是有效的 JSON 字符串?

java - 将旧版本从 ant 移动到 maven,有旧静态 JAR 的子目录,不知道 groupIds 或 artifactIds,如何编写 <dependency>

java - 单击 JButton 后关闭 jFrame

java - 如何访问数组的枚举

java - 为什么 Spring Data Jpa 中 JpaRepository 没有 saveAll 方法?

java - 刷新jTable

java - Snakeyaml 似乎不必要地将简单值包装在列表中

java - 寻找最接近0的数字