我知道java是通过引用传递的,但仅适用于Java对象。但是为什么它不适用于Java Wrapper类?包装类如Integer,Float,Double是通过引用传递还是通过值传递?因为每当我在方法中传递此类的对象并且更改某些值时,但在该方法之外我没有获得更新值。
答案 0 :(得分:5)
在pass by value
讨论之上,Java中的所有包装类都是不可变的。他们复制了原语的行为。您需要返回最新值以查看更改。
答案 1 :(得分:0)
public static void main(String[] args) {
Integer i = 5;
display(i);
System.out.println(i);
}
private static void display(Integer i) {
i = 10;
}
The reason why i will not be updated because i=10 will use autoboxing here and it will be similar to i = new Integer(10)
Since i is pointing to a new memory address this change will not appear in main method