关于我对i++和++i的一些理解
自增运算和自减运算是我们在写代码时用的比较多的一类运算,以下是我对此类运算的一些理解,如果有理解上的问题请大佬帮我指出来,互相学习进步。
关于i++
public class Studying {
public static void main(String[] args) {
int i = 2; //定义局部变量i,赋值为2
int a = i++; //先将i的值赋给a,此时i = 2,a = 2,再将i的值自增1,此时i = 3
System.out.println("a = "+ a + ", i = " + i);
}
}
//输出 a = 2, i = 3
关于++i
public class Studying {
public static void main(String[] args) {
int i = 2; //定义局部变量i,赋值为2
int a = ++i; //先将i自增1,此时i = 3,再将自增后的i值赋给a,此时a = 3
System.out.println("a = "+ a + ", i = " + i);
}
}
//输出 a = 3, i = 3
同理就可知 --i和i–
综合用
public class Studying{
public static void main(String[] args){
int i = 2; //定义局部变量i,赋值为2
int a = i++; //先将i的值赋给a,此时i = 2,a = 2,再将i的值自增1,此时i = 3
int c = ++i; //先将i自增1,此时i = 4,再将自增后的i值赋给c,此时c = 4
System.out.println("a = "+ a +", c =" + c + ", i = " + i);
}
}
//输出 a = 2, c = 4, i = 4
对比i++和++i
i++版
//求前100的正整数的和
public class Studying {
public static void main(String[] args) {
int j = 100;
int sum = 0;
for (int i = 1; i <= j; i++) {
sum += i;
}
System.out.println("sum = " + sum);
}
}
//输出 sum = 5050
++i版
//求前100的正整数的和
public class Studying {
public static void main(String[] args) {
int j = 100;
int sum = 0;
for (int i = 1; i <= j; ++i) {
sum += i;
}
System.out.println("sum = " + sum);
}
}
//输出 sum = 5050
总结
i++和++i在使用时没有什么区别。
i++在计算机中的操作是:1.读取i的值 2. i + 1 3. 存回i的值
++i在计算机中的操作是:1. i + 1 2. 存回i的值
++i在指令上少了一步,但我们实际上用的时候没有什么区别,因为计算机中的编译器已经帮我们把这个优化做了。
学习内容部分摘自b站狂神说Java