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

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

时间:2014-09-05 04:28:40      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   ar   div   代码   sp   log   

在java中,数组是对象,所以也是种引用类型。

以下示例代码会展示 一 数组中的值为基本类型 二 数组中的值为对象 三 数组的直接赋值和clone赋值

示例1 基本类型数组赋值

 1 public class Topcoder
 2 {
 3     public static void  main(String[] args)
 4     {
 5         int[]a={2,3,4};
 6         int[]b=a;
 7         System.out.print(a[0]+" ");
 8         System.out.println(b[0]);
 9         b[0]=0;
10         System.out.print(a[0]+" ");
11         System.out.println(b[0]);
12     }
13 }

 

output:

2 2
0 0

代码分析,行6把a赋值给b,代表a和b指向同一对象。所以当b[0]改变时,a[0]也随之改变。

示例2 基本类型数组克隆赋值

 1 public class Topcoder
 2 {
 3     public static void  main(String[] args)
 4     {
 5         int[]a={2,3,4};
 6         int[]b=a.clone();
 7         System.out.print(a[0]+" ");
 8         System.out.println(b[0]);
 9         b[0]=0;
10         System.out.print(a[0]+" ");
11         System.out.println(b[0]);
12     }
13 }

代码分析,行6把a的克隆赋值给b,现在有两份数组副本,a指向原本的第一份,b指向第二份。所以当b[0]改变时,a[0]不受其影响。

output为:

2 2
2 0

示例3 引用类型数组赋值

 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[3];
10         a[0]=new Number();
11         a[0].num=2;
12         Number[]b=a;
13         System.out.print(a[0].num+" ");
14         System.out.println(b[0].num);
15         b[0].num=0;
16         System.out.print(a[0].num+" ");
17         System.out.println(b[0].num);
18     }
19 }

output为:

2 2
0 0

分析如示例1

示例4 引用类型数组克隆赋值

 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[3];
10         a[0]=new Number();
11         a[0].num=2;
12         Number[]b=a.clone();
13         System.out.print(a[0].num+" ");
14         System.out.println(b[0].num);
15         b[0].num=0;
16         System.out.print(a[0].num+" ");
17         System.out.println(b[0].num);
18     }
19 }

output为:

2 2
0 0

示例4 a的clone赋值给b,a和b指向了不同的数组副本。但是里面的对象的引用是相同的,即a[0]和b[0]是指向同一对象的。只不过储存a[0],b[0]的位置是不同的。

 

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

标签:style   blog   color   java   ar   div   代码   sp   log   

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

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