首页 > 代码库 > java中的值传递和引用传递

java中的值传递和引用传递

先弄清楚两者的概念

按值传递:意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。

按引用传递:意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

函数传参:

1、原始数据类型是按值传递的。

public class test {    public static void main(String[] args){        int i=1;        change(i);        System.out.println(i);    }    private static void change(int var) {        // TODO Auto-generated method stub        var=-var;    }}

 输出:1

2、对象就是传引用

public class test {    public static void main(String[] args){        Person person=new Person();        person.i=1;        change(person);        System.out.println(person.i);    }    private static void change(Person tmp) {        // TODO Auto-generated method stub        tmp.i=100;    }}

输出:100

 

 

String类型因为没有提供自身修改的函数,每次操作都是新生成一个String对象,所以要特殊对待。可以认为是传值。

Done!

java中的值传递和引用传递