关于值传递和引用传递的问题,我想很多人刚开始学的时候都会很迷惑,特别是有些书的文学水平实在不敢恭维。 
在此,我特在此对Java的传值和传址提出我自己的一个看法,也许让你能对这个问题的理解起到帮助。 
        首先:值传递是很好理解的。比如: 
        public   class   test   { 
      int   a   =   3; 
      public   void   plus(int   b){ 
        b     =   b+1; 
        } 
        public   static   void   main(String   args[]) 
      { 
        test   t   =   new   test(); 
        t.plus(t.a); 
        System.out.println(t.a); 
      } 
      } 
    输出的结果是3.这就是值传递。其实我们可以这样理解: 
          在plus(int   b)函数里,int   b是作为这个函数的一个局部变量,在调用这个函数的时候开始位这个变量的内存空间。当我把变量a传给这个函数的时候,实际上是把a变量当时的值拷贝一个放到变量b的分配空间里,b   =   b+1;这句改变的只是函数的局部变量b的值,当调用结束的时候,变量b的作用范围也就结束了,而你在什么时候修改了变量a的分配空间呢?当然是没有啦(除非你理解成变量a的空间整个放进b的空间里:)) 
      而所谓的引用传递,我觉得这个名次起的很混淆视听。以我自己的理解,一切传递都是拷贝传递。因为对象的标识符代表的是对象的存储地址,所以你把对象的标识符号传递给函数的时候,实际上是把对象地址的拷贝传递给了函数。虽然也是拷贝,但是2个地址拷贝都是指向一个地址的,所以如果在函数里修改了对象,那么也实际上就修改了原先的值.
归根到底一句话:Java一切参数的传递都是拷贝传递!