Java传参是值传递和引用传递!但是具体是什么意思呢?有大神能帮我说说吗?举例子最好啦!!
直接传入参数,在函数执行完之后,参数不会返回,如果是引用参数,函数执行完后,传入的值也会做对应的修改
main (){int n = 10;a(n);}
int a(int m){m = 100;}这样写,main函数中执行完调用a函数后,n还是10,
int a(int &m){m = 100;}这样写,main函数中执行完调用a函数后,n就是100了
值传递,就是参数中传入的是一个值 ,不会修改 传入的这个值.(复制一份值给这个局部变量)
引用传递就是参数中传入这个值,会修改传入的这个值 (假设这个值是一个全局变量,传入函数后进行了修改 ,那在后面再调用的时候发现全局变量值发生了变化)
楼上用C的举例正确,希望能理解
传入值和传入引用的区别
import java.util.LinkedList;
import java.util.List;
public class Api {
public static final void main(String[] args) {
int tmp = 10;
change(tmp);
//可以看到,传入的temp没有被修改掉
System.out.println(tmp);
List<Integer> list = new LinkedList<Integer>();
change(list);
//可以看出,传入的List被修改了,之前大小是0,现在打印结果是1
System.out.println("size=" + list.size());
}
public static void change(int tmp) {
tmp = tmp * 2;
}
public static void change(final List<Integer> list) {
list.add(1);
}
}
传值是说参数是原值或源对象引用的副本,在方法里对参数本身(基本类型的值,对象的引用)的改变不会反映在源对象上
传引用是指如果参数是一个对象引用的话,因为传递的是引用副本,其实参数和源对象引用指向的是同一个对象,在方法里对对象属性的修改
会反映在源对象上