理解:++
运算,变量自己的值加1。反之,--
运算,变量自己的值减少1,用法与++
一致。
1、单独使用
练习:
-
变量在单独运算的时候,变量
前++
和变量后++
,变量的是一样的; -
变量
前++
:例如++a
。 -
变量
后++
:例如a++
。public class OperatorDemo3 { public static void main(String[] args) { // 定义一个int类型的变量a int a = 3; //++a; a++; // 无论是变量前++还是变量后++,结果都是4 System.out.println(a); } }
2、复合使用
-
和
其他变量放在一起使用
或者和输出语句放在一起使用
,前++
和后++
就产生了不同。 -
变量
前++
:变量先自身加1,然后再取值。 -
变量
后++
:变量先取值,然后再自身加1。public class OperatorDemo03 { public static void main(String[] args) { // 其他变量放在一起使用 int x = 3; //int y = ++x; // y的值是4,x的值是4, int y = x++; // y的值是3,x的值是4 System.out.println(x); System.out.println(y); System.out.println("=========="); // 和输出语句一起 int z = 5; //System.out.println(++z);// 输出结果是6,z的值也是6 System.out.println(z++);// 输出结果是5,z的值是6 System.out.println(z); int a = 1; a = a++;//(1)先取a的值“1”放操作数栈(2)a再自增,a=2(3)再把操作数栈中的"1"赋值给a,a=1 int i = 1; int j = i++ + ++i * i++; /* 从左往右加载 (1)先算i++ ①取i的值“1”放操作数栈 ②i再自增 i=2 (2)再算++i ①i先自增 i=3 ②再取i的值“3”放操作数栈 (3)再算i++ ①取i的值“3”放操作数栈 ②i再自增 i=4 (4)先算乘法 用操作数栈中3 * 3 = 9,并把9压会操作数栈 (5)再算求和 用操作数栈中的 1 + 9 = 10 (6)最后算赋值 j = 10 */ } }
小结:
-
++在前,先自加,后使用;
-
++在后,先使用,后自加。
-
练习:
public class Test11 { public static void main(String[] args) { int i = 1; i *= 0.2; System.out.println(i);//i==0 i++; System.out.println("i=" + i);//i==1 int i1 = 2; i1 *= i1++; System.out.println(i1);//i==4 int j = 2; j *= j+1; System.out.println(j);//j==6 int k = 2; k *= ++k; System.out.println(k);//k==6 } } // 前++也好,后++也好,这个自增是必须进行的,j是被新赋值之后又变成的0 // ++有两个动作(两个动作必须先后完成,中间不能被任何操作分割) // 前++:1、自加,2、将数放到操作数栈中 // 后++:1、将数放到操作数栈中 ,2、自加