2 john lee1 John_Lee1 于 2016.09.26 08:35 提问

哪位大神能够帮我分析一下Java的传参方式和区别啊,最好有例子啦!!

Java传参是值传递和引用传递!但是具体是什么意思呢?有大神能帮我说说吗?举例子最好啦!!

5个回答

qq_29594393
qq_29594393   Ds   Rxr 2016.09.26 09:25

值传递,就是参数中传入的是一个值 ,不会修改 传入的这个值.(复制一份值给这个局部变量)
引用传递就是参数中传入这个值,会修改传入的这个值 (假设这个值是一个全局变量,传入函数后进行了修改 ,那在后面再调用的时候发现全局变量值发生了变化)
楼上用C的举例正确,希望能理解

qq_29594393
qq_29594393   Ds   Rxr 2016.09.26 09:30

传入值和传入引用的区别

 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);  
    }  

}  
qq_29594393
qq_29594393 回复John_Lee1: 可以的 话,采纳一下吧^_^
大约一年之前 回复
John_Lee1
John_Lee1 这个讲解的很清晰啊!谢谢咯!
大约一年之前 回复
lx624909677
lx624909677   Ds   Rxr 2016.09.26 08:42

直接传入参数,在函数执行完之后,参数不会返回,如果是引用参数,函数执行完后,传入的值也会做对应的修改

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了

yuanjw2014
yuanjw2014   2016.09.26 09:53

传值是说参数是原值或源对象引用的副本,在方法里对参数本身(基本类型的值,对象的引用)的改变不会反映在源对象上
传引用是指如果参数是一个对象引用的话,因为传递的是引用副本,其实参数和源对象引用指向的是同一个对象,在方法里对对象属性的修改
会反映在源对象上

u013058549
u013058549   2017.02.11 19:53
Csdn user default icon
上传中...
上传图片
插入图片