码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-09-05 07:39:00      阅读:178      评论:0      收藏:0      [点我收藏+]

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

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

标签:style   blog   color   java   ar   数据   div   sp   log   

原文地址:http://www.cnblogs.com/AlexWei/p/3957171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!