推荐一个大神的人工智能教程!http://blog.csdn.net/jiangjunshow
- 说来惭愧,从事开发工作也有一年时间了,然而在今天的一个业务逻辑里突然发现原来我对i++和++i都没有理解,或者说我之前的理解是错误的。这对于一个有追求的程序猿是不能容忍的。知道之后,迅速恶补学习,现在算是彻底的理解了。
- 这篇文章可能对于大神没什么用,毕竟技术层次不够,大神追求的都是思想层面的东西。但对于一些初学者的话还是有一些用的,或者有跟我一样的已经入行一些时间了,但对这个理解模糊的(IT界估计也就我一个了 ~~捂脸!)都可以参阅学习,我写的比较详细,相信只要你看,就绝对会有收获
1, i++ 和++i
–
在区分这两个之前,我们先来了解一下它们的运算规则int i=1,a=0; * i++ 先运算在赋值,例如 a=i++,先运算a=i,后运算i=i+1,所以结果是a==1 * ++i 先赋值在运算,例如 a=++i,先运算i=i+1,后运算a=i,所以结果是a==2
- 1
- 2
- 3
看下面程序运行结果,有图有真相:
public class Test3 { public static void main(String[] args) { int i=1,a=0; System.out.println("a=i++===> "+(a=i++));//1 //System.out.println("a=++i===> "+(a=++i));//2 } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
这里算是基本了解了,那么我们在来一个练习让你更加的理解它们之间的关系
public class Test3 { public static void main(String[] args) { int y=0; int i =0; y=++y; y=++y; y=++y; y=++y; y=++y; System.out.println("y="+y); i=i++; i=i++; i=i++; i=i++; i=i++; System.out.println("i="+i); } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
附上结果
是不是感觉有点转过转弯来,如果有这种感觉,那么恭喜你(找到跟我之前症状相同的了,哈哈),你也得好好理解理解了。下来是我添加上详细注释的代码。
public class Test3 { public static void main(String[] args) { int y=0; //注意"="是赋值,"=="才是相等 y=++y;// y==0,++y==y+1; 结果y=++y == y+1 == 0+1 ==1 y=++y;// y==1,++y==y+1; 结果y=++y == y+1 == 1+1 ==2 y=++y;// y==2,++y==y+1; 结果y=++y == y+1 == 2+1 ==3 y=++y;// y==3,++y==y+1; 结果y=++y == y+1 == 3+1 ==4 y=++y;// y==4,++y==y+1; 结果y=++y == y+1 == 4+1 ==5 System.out.println("y="+y);//5 int i =0; // i==0,i++==0; 结果i=i++ == (记住先赋值后运算)i=i,i=i+1(由于是i++运算这里我们输出的i只取先赋值的结果也就是i=i) i=i++; i=i++; i=i++; i=i++; i=i++; System.out.println("i="+i);//0 System.out.println("================");//1 } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
还没有理解的,好好琢磨琢磨代码很容易就会理解啦。
推荐一个大神的人工智能教程!http://blog.csdn.net/jiangjunshow