如果Integer
,Boolean
等被称为“......拳击”,如果它们的行为不像可以通过“通过参考”传递盒装对象并拆箱来改变它们的值,那么它有什么意义?Java中的自动装箱原语有什么意义?
下面是我实际发现的“取消装箱”的示例并非真正拆箱。
public static void main(String[] args) {
Boolean x = true;
foo(x);
System.out.println(x);
Integer num = 9;
bar(num);
System.out.println(num);
}
private static void bar(Integer num) {
num = 5;
}
static void foo(Boolean x){
boolean y = false;
x = y;
}
它打印真实和9 btw。
Java是由* *价值传球,总是,没有例外。您正在更改方法内的引用,这不会影响原始传递的值。还记得'Integer'是*不可变*。 – Maroun
但是不是'num = 5;'认为拆箱?所以它改变了对象内部的值,并且这个对象的引用是相同的。 @MarounMaroun – shinzou