java中值类型和引用类型的不同实例(三)

毫无疑问,函数传值和函数传引用的区别是 传值是传一份数据拷贝 传引用的话 是可以操纵对象.

但是一般人忽略的是传引用其实也是传一份引用的副本.

示例如下:

 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函数中并无改变对象内容,所以没有变化

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。