直接上代码,看说明和注解你就懂了!
1. i++和++
/**
* @Author: 说谎 说明:自增 (i++和++i)和(+=和=+)的区别,口诀:哪个在前,先计算
* @Date 2022/3/10 10:15
*/
public class Increment {
public static void main(String[] args) {
int i=1;
//很好记忆:i++是字母在前先赋值,后运算。所以应该是把i先给j,所以j=1,在运算1+1=2,i就变成2了
int j=i++;
//++i,++在前是先运算在赋值。所以应该先运算,2+1=3,i就变成3了,再赋值给q,q=3了。
int q = ++i;
//所以打印出来就应该是i=3,j=1,q=3.
System.out.println("i="+i+";j="+j+";q="+q);
//同样可以变换下顺序自己做一下看看就知道了
}
}
作业:自己把J=i++的位置和q=i++的位置换一下,看看答案是什么。应该是i=3,j=2,q=2.
2.+=和=+
package com.gao.test.increment;
/**
* @Author lie
* @Description
*/
public class Increment {
public static void main(String[] args) {
int k = 1; // k -> 1
int u = 1; // u -> 1
k =+ 1; // 赋值 k = i 这种写法没有意义
System.out.println("k= "+ k); // 结果是 k = 1
u += 1; // 相当于 u = u + 1 和其他的/= %=都是一个意思
System.out.println("u= "+u); // 结果是 u = 2
}
}
面试题:
package com.gao.test.increment;
/**
* @Author lie
* @Description
*/
public class Increment {
public static void main(String[] args) {
int i = 1; // i -> 1
i = i++; // 赋值在java底层使用的是临时变量,所以 ① temp = i ② i = i + 1 ③ i = temp
System.out.println("i= "+i); // 结果是1
int j = 1; // j -> 1
j = ++j; // 赋值在java底层使用的是临时变量,所以 ① j = j + 1 ② temp = j ③ j = temp
System.out.println("j= "+j); // 结果是2
}
}
注意:先赋值的意思是:先把值付给临时变量,最后把临时变量的值付给你要付的值,并不是直接就把值赋给你要付的值。