不多BB先上段代码感受一下:
public class Test {
public static void main(String[] args) {
/**
* i++ 先运算在赋值,例如 a=i++,先运算a=i,后运算i=i+1,所以结果是a==1
* ++i 先赋值在运算,例如 a=++i,先运算i=i+1,后运算a=i,所以结果是a==2
*/
int i = 1, flag = 0;
System.out.println("i++===>"+(flag=i++));//结果为:
// System.out.println("++i===>"+(flag=++i));结果为:
}
}
在来一段更装逼的:
public class Test01 {
public static void main(String[] args) {
int x = 0, y = 0;
x = ++x;
x = ++x;
x = ++x;
x = ++x;
x = ++x;
x = ++x;
System.out.println("x="+x);//结果为:
y = y++;
y = y++;
y = y++;
y = y++;
y = y++;
y = y++;
System.out.println("y="+y);//结果为:
}
//
加上注释之后:
public class Test02 {
public static void main(String[] args) {
int x = 0, y = 0;
x = ++x;// x==0,++x==x+1; 结果x=++x == x+1 == 0+1 == 1
x = ++x;// x==1,++x==x+1; 结果x=++x == x+1 == 1+1 == 2
x = ++x;// x==2,++x==x+1; 结果x=++x == x+1 == 2+1 == 3
x = ++x;// x==3,++x==x+1; 结果x=++x == x+1 == 3+1 == 4
x = ++x;// x==4,++x==x+1; 结果x=++x == x+1 == 4+1 == 5
x = ++x;// x==5,++x==x+1; 结果x=++x == x+1 == 5+1 == 6
System.out.println("x="+x);
// y==0,y++==0; 结果y=y++ == (记住先赋值后运算)y=y,y=y+1
// (因为是y++运算这里我们输出的y只取先赋值的结果也就是y=y)
y=y++;
y=y++;
y=y++;
y=y++;
y=y++;
System.out.println("y="+y);//结果还是 0
}
}
以上就是i++与++i的区别.