java的参数传递与i++

[java]

public class Test {
public void add(Integer a)
{
a=a++;
}

public static void main(String[] args)
{
Test test = new Test();
Integer a = 1;
test.add(a);
System.err.println(a);
}
}

[/java]

问题是输出a的值是的多少?

Integer a = 1;//因为1是基本数据类型,是不可以赋值给一个对象类型,但是Java提供的自动装箱,会自动将基本数据类型封装为对象类型。

add(Integer a) //这里将a做为一个引用传递给add方法后,因为Integer类是属于不可变类,也就是不可以修改其属性值,所以在运算的时候,会自动将其拆箱,也就是将其转化为基本数据类型进行运算,所以这里的计算结果不会改变a的值。

a=a++ // 因为++在a的后边,所以先使用a,就是i++这个表达式的值是1,但是并没有做赋值操作,它在整个语句的最后才做赋值,也就是说在做了++操作后再赋值的,所以最终结果还是1