本文正在参加「Java主题月 - Java 刷题打卡」,详情查看 活动链接
概念描述:
- i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1
- ++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2
简易描述:
- a=i++ 等同于 a= i ; i = i+1;
- a=++i 等同于 i = i+1; a=i
// i++
int temp = i;
i = i+1;
return temp;
// ++i
i = i + 1;
int temp = i;
return temp;
详细描述:
- i++ 即后加加,原理是:先自增,然后返回自增之前的值
- ++i 即前加加,原理是:先自增,然后返回自增之后的值
练习题:
第一题
int i = 0;
i = i++;
System.out.println("i = " + i);
第二题
int a = 2;
int b = (3 * a++) + a;
System.out.println(b);
第三题
int a = 2;
int b = a + (3 * a++);
System.out.println(b);
第四题
int i = 1;
int j = 1;
int k = i++ + ++i + ++j + j++;
System.out.println(k);
第五题
int a = 0;
int b = 0;
a = a++;
b = a++;
System.out.println("a = " + a + ", b = " + b);
因为在看代码的时候发现了很多地方都在使用++i,比如HashMap里面判断是否需要扩容的时候,根据 (++size > threshold ) 这个判断是否需要进行扩容。发现自己对i++和++i的概念有些模糊,于是找了一些博客看了之后敲下了这篇文章。题目答案会放在文章的评论处。如有不正确的地方欢迎指正,希望本篇文章可以帮助到你~