名词解释:

值传递:方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。(这相当于原有内存空间不会受影响)

引用传递:也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,所以方法执行中形式参数的改变将会影响实际参数。(这相当于原有内存空间中的值被改变了)

引用传递示例

package horace.com;
class A{
 int temp = 10;
}

public class Demo01 {
 public static void main(String[] args) {
  A a = new A();
  a.temp = 20;
  System.out.println(a.temp);
  tell(a);
  System.out.println(a.temp);
    
 }
 public static void tell(A a2){
  a2.temp = 30;
 }
}

显示的结果为

20
30

值传递示例:

package horace.com;
class B{
 public void tell(int temp){
  temp = 30;
  System.out.println("tell()方法中,temp的值"+temp);
 }
}
public class Demo02 {
 public static void main(String[] args) {
  int temp =20;
  B b =new B();
  b.tell(temp);
  System.out.println("原有temp的值,或者说main方法中temp的值:"+temp);
  
 }
}

显示的结果为:

tell()方法中,temp的值30
原有temp的值,或者说main方法中temp的值:20

从上面可以看出来,引用传递,是将内存空间的地址传递给其他对象,这样无论谁更改都会改变该内存空间的存放的数据;值传递是将内存空间存放的数值传递给其他对象,对原来内存空间存放的数据不会造成影响。