public class Main {
public static void main(String[] args) {
int x=iAddAdd(); //1
int y=addAddI(); //2
System.out.println("x="+x); //3
System.out.println("y="+y); //4
int i=0; //5
System.out.println(i++); //6
System.out.println(++i); //7
}
public static int addAddI() {
int i=0; //8
int b=0; //15
b=++i; //16
System.out.println("b="+b); //17
return ++i; //10
}
public static int iAddAdd() {
int i=0; //11
int a=i++; //12
System.out.println("a="+a); //13
return i++; //14
}
}
在Java中,i++和++i都是用来给i这个变量赋值的,不同的是,++i是先让i增加,再进行使用;而i++则是先给把i给用了,再让i增加。
为了方便,我通过注释给上面代码的每句话都编了一下号。
在上面的程序中,我们先执行了1号语句,我们定义了变量x,使它的值为iAddAdd这个函数的返回值。在iAddAdd当中,我们通过11制造出形式参数i,初值为零,在执行12时,计算机内部过程为:先把i拿出来,看看程序需不需要拿它做什么,这时,电脑发现他需要把i的值赋值给a,于是他就先让a=i(即让a=0),完成了这一步之后,计算机把i增加了1。这个就叫做先用再加。所以13输出的结果就是a=0。而,继续执行第14 句时,计算机又看到了i++,这时,他发现程序让他把i的值返还给主函数中的x,于是,他就将i的值给了语句1的x,给完之后,i变成2。这就叫:加号在后用后加。
程序回到主函数,执行语句2,调用了函数addAddI,当加加i执行到16号语句时,计算机现将i的值增加1,再检测i有没有什么用处,发现要把它赋值给b,于是b 就是1,这就叫:加号在前用前加。