日期:2014-05-20  浏览次数:20643 次

一个可能是很简单的问题
Main中:
Java code

long a_long=0L;
Long a_Long=0L;
A a_Class=new Main.A(0);

test_long(a_long);
testClass(a_Class);
testLong(a_Long);


调用的方法
Java code


    private static void testLong(Long a){
        a=111111111111L;
    }


    private static void test_long(long a){
        a=111111111111L;
    }

    private static void testClass(A a){
        a.setA(111111111L);
    }



Class A为:
Java code

public class A{

        private Long a;

        public void setA(Long a) {
            this.a = a;
        }
        public Long getA() {
            return a;
        }
        public A(long a){
            a=Long.valueOf(a);
        }

    }




test_long(a_long);
testClass(a_Class);
都很容易理解,但是Long其实也是一个java.lang中定义的一个Class
testLong(a_Long);
为什么testLong中改变参数的值时不影响调用方呢???

求喷,求指导,求蹂躏啊!!!!

------解决方案--------------------
Java只有形参,没有实参。如果你以为是实参说明你理解错误了:

a = xxxxxxx; 这是直接对形参进行操作。
a.setA(111111111L); 这是调用了形参所引用对象的函数。

能理解么?