值传递 以及 引用传递简单 介绍。
值传递 指的是在方法调用时,传递的参数是按值的拷贝传递 (传递前 和传递后 对象的引用不变 java 中基本数据类型以及对应的 包装类 经过方法传递是 值不会改变)
引用传递 指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存 空间的地址 (java 中类似于句柄值,对象类经过方法后 引用地址不改变)
java 中只有值传递 没有引用传递 一下是代码证明 附件简单说明
package com.lyh.za.test.project;
public class TestB {
public static void main(String[] args) {
TestA a = new TestA();
System.out.println(a);
testChange(a);
System.out.println(a);
}
public static TestA testChange(TestA a) {
a = new TestA();//改变对象的引用
return a;
}
}
输出结果
com.lyh.za.test.project.TestA@15db9742
com.lyh.za.test.project.TestA@15db9742
有以上结果值 如果java 是引用传递 在方法 testChange中我们改变了 对象的引用 输出 结果应该是 新的引用。
基本的数据类型以及包装类的简单证明
public class TestB {
public static void main(String[] args) {
int a = 10;
int b = 20;
testChange(a, b);
System.out.println(a + "," + b);
Integer a1 = 30;
Integer b1 = 40;
testChange(a1, b1);
System.out.println(a1 + "," + b1);
}
public static void testChange(int a, int b) {
a = a + b;
b = a - b;
}
public static void testChange(Integer a1, Integer b1) {
a1 = new Integer(3);
b1 = new Integer(1);
}
}
结果如下
10,20
30,40
由此可知 通过方法的调用并没有改变 对象的引用 由此值 java 里面只用值传递