当前位置: 代码迷 >> Java相关 >> 一个可能是很简单的有关问题
  详细解决方案

一个可能是很简单的有关问题

热度:8636   发布时间:2013-02-25 21:46:30.0
一个可能是很简单的问题
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); 这是调用了形参所引用对象的函数。

能理解么?
  相关解决方案