前言
为什么发一篇这么常见的,看上去没有营养的文章?
原因是: 在某个交流群,发现很多人竟然都不清楚..
所以该篇发出来,让刚好点进来看到这篇文章的初学者,加深一下印象。
正文
i++ 先赋值再运算
++i 先运算再赋值
a = i + + ; 先把 i 赋值给 a , i再运算 i = i + 1
a = + + i ; 先 i 运算 i = i + 1 , 再把 i 赋值给 a
实例测试1:
public static void main(String[] args) { int a=1; int b=1; a=a++; a=a++; a=a++; System.out.println("a: "+ a); //a: 1 b=++b; b=++b; b=++b; System.out.println("b: "+b); //b: 4 int c=1; int d=1; c++; c++; c++; System.out.println("c: "+c); //c: 4 ++d; ++d; ++d; System.out.println("d: "+d);//d: 4 }
实例测试2:
public static void main(String[] args) { int i=1,a=1; a=i++; System.out.println("a : "+a); //a : 1 System.out.println("i : "+i); //i : 2 int j=1,b=1; b=++j; System.out.println("b : "+b); //b : 2 System.out.println("j : "+j); //j : 2 }
那么给正在读该篇文章的你,留下一个简单的问题,下面这段小代码输出的结果是什么?
可以把自己的第一印象想到的结果打在评论上,后面自己再去核实。
耐心看到这里的小伙伴,我愿意与你们分享一下我对这个 i++ 与 ++i 的 理解方式:
i++
先用后加
++i
先加后用
为什么我描述成 ‘用’ ?
因为在使用这个i++ 和++i 的时候,其实有两种场景,一种是 用 了 变量来接收值;一种是 没用 变量接收值。
用? 先用后加:
int i=0; try { i++; } finally { i++; } System.out.println( i++);
这里的输出 是 2 。
为什么,就是因为在 输出的时候已经是 在 用的场景了, 所以先用(前面加了2次等于2),所以先用的时候,值就是等于 2.
那么为了验证一哈,是不是 用 再 加 , 所以我在这个输出后,再直接输出多一次:
可以看到第一次输出是2之后,用 的行为结束,执行加。 所以第二次输出是3 。