今天跟朋友讨论java的赋值与自增问题
@Test public void test2() { int a = 5; int b = a++; System.out.println("a = " + a); System.out.println("b = " + b); }
输出为:a = 6,b = 5
@Test public void test2() { int a = 5; a = a++; System.out.println("a = " + a); /*System.out.println("b = " + b);*/ }
输出为:a = 5
解释:a = a++;首先做a = a的操作,这时,后面的基本类型(整型)a已经丢失了,有新的(前面的)基本类型(整型) new Integer(a),这时候后面的基本类型(整型)a++没用了 ,而 b = a++ 先做b = a 但是a没丢失 a++ 还有用,a = a Java 自动分配新的栈内存给前面的a 也就是new Integer(a)