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!

posted @ 2015-01-20 15:46  行云有影  阅读(164)  评论(0编辑  收藏  举报