java基本类型的包装集作为参数传递的是值而不是引用

java基本类型的包装集作为参数传递的是值而不是引用,可以解释下,为什么是这样的吗?结果我已经知道了

说到值传递,无非就是和引用传递以及地址传递相对来说的。
引用传递,行参记录的是实参的地址。值传递,行参是实参的copy。
对于java来说,行参存的就是实参内部的值(虽然这个值是对象的地址,但不是实参的地址)

因为基本类型copy很简单,编译器对其也做了优化,基本上可以做到和引用相同的性能。

这个这没有认真想过,只知道结果。

这个是人家规定。。。。。。。。。。。。。。

例如:
public static void main(String[] args) {
int i = 3;
Integer j = new Integer(3);
System.out.println("传递前i===" + i);
System.out.println("传递前j===" + j);
setValue(i);
setValue(j);
System.out.println("传递后i===" + i);
System.out.println("传递后j===" + j);
}

private static void setValue(Integer integer) {
    integer = 5;
}

编译结果:
传递前i===3
传递前j===3
传递后i===3
传递后j===3
我期待的结果是:
传递前i===3
传递前j===3
传递后i===3
传递后j===5
原因是什么呢????????再次求解

这个integer对象有其特殊性,在该类中是final类型。所以并不能改变