标签:
先弄清楚两者的概念
按值传递:意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。
按引用传递:意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。
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!
标签:
原文地址:http://www.cnblogs.com/xingyyy/p/4236291.html