包装类是通过值传递还是通过引用传递?

时间:2015-09-23 18:23:20

标签: java

我知道java是通过引用传递的,但仅适用于Java对象。但是为什么它不适用于Java Wrapper类?包装类如Integer,Float,Double是通过引用传递还是通过值传递?因为每当我在方法中传递此类的对象并且更改某些值时,但在该方法之外我没有获得更新值。

2 个答案:

答案 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