首页 > 代码库 > java中值类型和引用类型的不同实例(二)
java中值类型和引用类型的不同实例(二)
在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中值类型和引用类型的不同实例(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。