- int x = 5;
- x = x++;
- System.out.println(x);
输出的值竟然是5?
要理解这其中的奥秘.我们需要了解两方面的知识:
1.连加符.a = i++, 的运算顺序是,i先赋值给a, 后再进行连加计算,最后再把计算结果赋值给自己(i)
2.java中的基本类型赋值.因为基本类型存储了实际的数值而并非指向一个对象的引用,所有在为其赋值时,是直接将一个地方的 内容复制到了另一个地方.例如,对基本数据类型使用“a=b”,那么b的内容就复制给了a。若接着又修改了a,那么b根本不会受这种修改的影响。
回来x = x++,右x先将自己的值赋给左x,左x和右x其实是位于两个不同的内存空间.然后右x再对自身连加.这样,左x值为5,右x值为6.程序输出左x,自然输出5.