平时我们对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
|
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++)这个表达式的值。
相信有很多人已经知道是这样的,这里只是记录下,也方便没有理解的童鞋学习。◕ᴗ◕。