All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。
这种问题如果再要解释多遍就是浪费时间了,幸好有internet...《Java is Pass-By-Value, Dammit!》 http://javadude.com/articles/passbyvalue.htm 《Java: life in a pass-by-value world 》 http://www.bearcave.com/software/java/misl/no_references.html《Does Java pass by reference or pass by value? 》 http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html........ 楼主如果用心,还是自己去理解吧~~
<<因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。>>刚好才看到一句“I finally decided to write up a little something about Java's parameter passing. I'm really tired of hearing folks (incorrectly) state "primitives are passed by value, objects are passed by reference".”REF: http://javadude.com/articles/passbyvalue.htm....楼上这句解释都已经被别人听得不耐烦了,就不要继续说了。这样的解释确实是一种不负责任的解释啊~~
http://javadude.com/articles/passbyvalue.htm 《Java: life in a pass-by-value world 》
http://www.bearcave.com/software/java/misl/no_references.html《Does Java pass by reference or pass by value? 》
http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html........
楼主如果用心,还是自己去理解吧~~
方法可以改变对象的值。
不要将方法的对象参数指向新的对象!