标签:style blog color java ar 数据 div sp log
毫无疑问,函数传值和函数传引用的区别是 传值是传一份数据拷贝 传引用的话 是可以操纵对象.
但是一般人忽略的是传引用其实也是传一份引用的副本.
示例如下:
1 class Number 2 { 3 public int num; 4 } 5 public class Topcoder 6 { 7 public static void main(String[] args) 8 { 9 Number a=new Number(); 10 a.num=1; 11 Number b=new Number(); 12 b.num=2; 13 swap(a,b); 14 System.out.println(a.num+" "+b.num); 15 } 16 17 static void swap(Number a,Number b) 18 { 19 Number temp; 20 temp=b; 21 b=a; 22 a=temp; 23 } 24 }
output为:
1 2
分析如下:
swap前
引用a----------->Number(num:1)
引用b----------->Number(num:2)
swap中
由于函数只是传了一份引用的副本并不对引用a和b造成任何影响 所以可以忽略对其影响
swap后
因为swap函数对引用a和b无任何影响,并且swap函数中并无改变对象内容,所以没有变化
标签:style blog color java ar 数据 div sp log
原文地址:http://www.cnblogs.com/AlexWei/p/3957171.html