验证++i和i++的区别

平时我们对k=++i和k=i++的区别解释一般记忆:

++i就是i先自身加1再赋值给k;

i++就是先将i赋值给k,i在自身加1;

这样的解释最终都是说将i赋值给了k。

这里通过写几个方法来证明,这个说法并不对。当然这样记忆可能更为方便些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

/**
* 分析++i和i++的区别.
* @author J.Kevin
*平时我们对k=++i和k=i++的区别解释一般记忆:
*<br/>++i就是i先自身加1再赋值给k;
*<br/>i++就是先将i赋值给k,i在自身加1;
*<p/>这样的解释最终都是说将i赋值给了k。
*<p/>这里通过几个方法来证明,这个说法并不对。当然这样记忆可能更为方便些。
*/
public class Test {
public static void main(String[] args) {
test1();
test2();
test3();
test4();
test5();
test6();
}

public static void test1() {
int i = 10;
int k = ++i;
System.out.println("k=++i结果:\t" + k);
}

public static void test2() {
int i = 10;
int k = i++;
System.out.println("k=i++结果:\t" + k);
}

public static void test3() {
int i = 10;
int k = (++i);
System.out.println("k=(++i)结果:\t" + k);
}

public static void test4() {
int i = 10;
int k = (i++);
System.out.println("k=(i++)结果:\t" + k);

}

public static void test5() {
int i = 10;
System.out.println("(++i)结果:\t" + (++i));
}

public static void test6() {
int i = 10;
System.out.println("(i++)结果:\t" + (i++));
}

}

可以看到,一共写了6个方法,目的只是为了证明一件事,那就是k=++i和k=i++并不是将i值赋值给了k,而是将++i和i++这个表达式赋值个了k。如何证明?

看下我的打印结果:


1
2
3
4
5
6
7

k=++i结果: 11
k=i++结果: 10
k=(++i)结果: 11
k=(i++)结果: 10
(++i)结果: 11
(i++)结果: 10

为了防止不好理解,这里特意为++i和i++添加了括号,意在证明结果就是(++i)和(i++)这个表达式的值。

相信有很多人已经知道是这样的,这里只是记录下,也方便没有理解的童鞋学习。◕ᴗ◕。