i = i++, i = ++i, j = i++, j = ++i 的区别

原创 2016年08月30日 17:38:54

题目来源牛客网上面练习的一道题目:

检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
package algorithms.com.guan.javajicu;  
public class Inc {  
    public static void main(String[] args) {  
       Inc inc = new Inc();  
       int i = 0;  
       inc.fermin(i);  
       i= i ++;  
       System.out.println(i); 
   
    }  
    void fermin(int i){  
       i++;  
    }  
}  
这个题目正确的答案是0.

原因是:

  • Java使用了中间缓存变量机制:
    i=i++;等同于:
    temp=i; (等号右边的i)
    i=i+1;      (等号右边的i)
    i=temp;   (等号左边的i)
    而i=++i;则等同于:
    i=i+1;
    temp=i;
    i=temp;
所以自己写代码测试如下:

public static void main(String[] args) throws InterruptedException {
		Inc inc = new Inc();
		int i = 0;
		i = i++;
		System.out.println(i);
		i = ++i;
		System.out.println(i);
	}



public static void main(String[] args) throws InterruptedException {
		Inc inc = new Inc();
		int i = 0;
		int j = i++;
		System.out.println("i = "+i +" j = "+j);
		j = ++i;
		System.out.println("i = "+i +" j = "+j);
	}


对于j = i++等同于

temp=i; 
i=i+1;     
j=temp;  

对于j = ++i等同于

i=i+1; 

temp=i;    

j=temp;  


版权声明:本文为博主原创文章,未经博主允许不得转载。

i = i++;

public class Test ...{    public static void main(String[] args) ...{        int i = 1;        i = i...
  • brooksychen
  • brooksychen
  • 2007年05月24日 22:34
  • 31197

JAVA i=i++的问题

int i=0;      i=i++;      结果i是多少?      这是一个经常被提及的问题,答案一直五花八门。      具体测试一下以说明问题:       代码1:public cla...
  • miderph84
  • miderph84
  • 2008年11月27日 13:10
  • 11178

浅谈java之++i和i++区别

浅谈java之++i和i++区别                   今天简单谈谈关于java的一个误区,相信很多刚开始学习java的朋友都会遇到这个问题,虽然问题很简单,但是经常容易搞混,说说jav...
  • u011747761
  • u011747761
  • 2015年01月09日 16:31
  • 10844

c语言中i++与++i的区别及运行效率

在c语言我们会经常把i++与++i弄混淆。 i++    是先使用,再自加(其自加是在遇到结束标志时才会进行) 即a = i;i=i+1; ++i    是先自加,再使用 即 i=i+1; a...
  • Mormont
  • Mormont
  • 2016年11月11日 19:39
  • 4751

i++和++i的区别

如果有表达式 a = i++  它等价于 a = i ; i = i + 1;       如果有表达式 a = ++i  它等价于   i = i + 1; a = i;       1 首先两者的...
  • David8631
  • David8631
  • 2008年07月25日 09:16
  • 83913

i++和++i的区别,及其线程安全问题

i++和++i都是i=i+1的意思,但是过程有些许区别: i++:先赋值再自加。(例如:i=1;a=1+i++;结果为a=1+1=2,语句执行完后i再进行自加为2) ++i:先自加再赋值。(例如:i=...
  • qq_35383263
  • qq_35383263
  • 2017年03月23日 21:26
  • 2424

java i++和++i的区别

//i++和++i是有区别的, //i++和++i都代表着i=i+1; //i++是在一个先使用原值,然后加1,即先使用i的值,后让i+1. //++i则是先加1后使用,即先让i+1后再使用i的新值....
  • q2267671366
  • q2267671366
  • 2014年12月23日 14:36
  • 2683

i++和i++的用法

接着上一篇文章,发现关于i++和++i确实有必要深入了解。 实际上++i比较容易理解,就是把原值加1,再用于运算中,但i++却是先进行运算,再进行递增加1,在多个组合式是,到底什么是对i++进行自增...
  • baby_newstar
  • baby_newstar
  • 2011年09月17日 00:06
  • 1112

令人纠结无比的a[i++]=i++

令人纠结无比的a[i++]=i++
  • lampqiu
  • lampqiu
  • 2014年08月25日 12:04
  • 2919

C++ 中 i++ 与 ++i 的本质区别

C++ 中的 i++ 和 ++i 是一对十分简洁但最容易让人忽视的操作,我已经对它们忽视了十多年, 直到近日做一些迭代器时才有所体悟。在刚开始学习C++时虽然知道它们在加一操作上有一个 先...
  • duguduchong
  • duguduchong
  • 2011年11月09日 19:47
  • 10460
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:i = i++, i = ++i, j = i++, j = ++i 的区别
举报原因:
原因补充:

(最多只允许输入30个字)