2015-09-23 41 views
1

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

+4

'Java' - >'pass by value'。 – Satya

+3

[是Java的“传递引用”还是“传递值”?]的可能重复?(http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass按值计算) – childofsoong

+1

Java总是按值传递。包装类可能看起来像传递引用,但它们不是。这是一个很好的阅读。 http://javadude.com/articles/passbyvalue.htm – yogidilip

回答

5

pass by value的讨论之上,Java中的所有包装器类都是不可变的。他们复制原语的行为。您需要返回最新值以查看更改。

+0

是的,如果我返回值我正在更新值。但我不明白,即使是Java通过引用传递为什么它不适用于Wrapper类。 –

+0

@ArvindChavhan因为它们是不可变的:)阅读关于不可变类。你会明白:https://en.wikipedia.org/wiki/Primitive_wrapper_class –

+0

好吧,我会读到它。感谢您的帮助 –