java - 不同情况下前缀和后缀运算符的区别

标签 java

我已经浏览了这个论坛中与该主题相对应的所有问题,并且我觉得提出一个不同的问题,因为这个问题没有得到明确的回答。这是我的场景: 我有这个类 Test1:

public class Test1 {
    public static void main(String args[]) { 
        int i=0, j=2;
        do {
            i= i+1;
            j--;
        } while(j>0);
        System.out.println(i);
    }
}

现在这是我的问题: a) 如果我用++i 替换 'i= i+1' 的增量操作,我会得到所需的输出

1
2

但是如果我用 i++ 替换 'i= i+1' 的增量操作,我会得到所需的输出

0
0

我确实理解在 for 循环中使用前缀和后缀运算符的区别,但为什么在 do-while 循环中该值根本没有增加?

最佳答案

使用i = i++;永远不会改变i值。

仅使用:

i++;
为什么?因为:

i = i++;

类似于做这样的事情:

temp = i;  // temp is 0.
i = i+1;  // increment i
i = temp;   // assign temp (which is 0) to i.

看看 similar post-increament问题和even another one .

关于java - 不同情况下前缀和后缀运算符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473305/

相关文章:

java - 我从哪里开始制作 Android 2D 游戏?

java - 使用 DefaultHttpClient 时出现“未通过身份验证”的 SSL 证书错误

Java Spring : How to use `@Value` annotation to inject an `Environment` property?

JAVA Quartz的谜题

java - EntityManager 内存消耗

java - 线程创建现象和启动线程之间的区别

java - 什么是测试预言机,它有什么用?

java - 抛出 OutOfMemoryError 是否会触发堆转储,或者内存实际上需要耗尽吗?

java - 如何在 TestNG 中使用 Selenium Webdriver 使用文本属性来识别元素

java - 等待更新