当然是by value,但问题就在于:一个参数的“value”不是别的,就是个reference,当然,内建类型除外,由于内建类型的“value”不是reference,所以理解内建类型参数传递过程中发生的现象就容易的多。

解决方案 »

  1.   

    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。 
      

  2.   

    这种问题如果再要解释多遍就是浪费时间了,幸好有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........
    楼主如果用心,还是自己去理解吧~~
      

  3.   

    <<因此我们可以这样解释: 基本类型(如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....楼上这句解释都已经被别人听得不耐烦了,就不要继续说了。这样的解释确实是一种不负责任的解释啊~~
      

  4.   

    方法不可以改变基本类型的值,改变只是复制的Value.
    方法可以改变对象的值。
    不要将方法的对象参数指向新的对象!