java - 为什么jshell显示这个数字?

标签 java java-17 jshell postfix-operator

我正在学习java,这个逻辑让我感到困惑。

这里不是i=20(+1)+20(+1)吗?

为什么选择 41 而不是 42

jshell> int i = 20
i ==> 20
jshell> i=i++ + i++
i ==> 41

查看此代码在Ideone.com运行.

最佳答案

实际上,表达式 i=i++ + i++;等于i=i++ + i; 。为什么?后者i++结果值永远不会被使用并且不会被传播。后缀加法的结果i++只要值 i 就可以使用稍后添加到表达式中,结果生效。然而后者之后i++ i的结果值未使用。

如果你想达到42的结果,将整个结果赋回 i++ 后,需要执行后缀赋值( i )变量:

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

关于java - 为什么jshell显示这个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73822770/

相关文章:

java - 我可以触发 Dropwizard 任务执行吗?

java - 如何将军事时间整数转换为标准时间字符串

java - 是否可以在同一个 MessageFormat 中使用多个 Locales?

java - 将包私有(private)类导入 JShell

java - 使用 JNDI + Weblogic 的 Hibernate 数据源

java - SQLNonTransientException 的可能解决方案

java - 如何在仍然与 java 8 兼容的情况下将库的源更新为现代 java 版本?

java - 为什么 UnixSystem().getUsername() 返回 null(Docker 中的 OpenJDK 17)

java - Java 9 jshell 可以用于在另一个 JVM 中运行代码吗?

java - 在jshell中查看类路径