A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何向阳 中级黑马   /  2012-12-11 12:44  /  953 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



1.

代码:


  • public class ValcpyDemo  
  • {  
  •     public ValcpyDemo()  
  •     {  
  •         int x = 0;  
  •         int y = x;  
  •         x = 1;  
  •         System.out.println("y = " + y);  
  •     }  
  •   
  •     public static void main(String[] args)  
  •     {  
  •         new ValcpyDemo();  
  •     }  
  •   
  • }  






y的值为0.对于基本的变量来说,通过简单复制就可以实现值变量的拷贝





2.但是对于对象来说:情况就不一样了



代码:


  • public class ObjcpyDemo  
  • {  
  •     public ObjcpyDemo()  
  •     {  
  •         // 定义student1对象变量  
  •         Student student1 = new Student();  
  •         student1.id = "0001";  
  •         student1.name = "Tom";  
  •         // 将student1赋值给student2  
  •         Student student2 = student1;  
  •         student1.id = "0002";  
  •         student1.name = "Jack";  
  •   
  •         System.out.println("student2.id = " + student2.id);  
  •         System.out.println("student2.name = " + student2.name);  
  •     }  
  •   
  •   
  •     public static void main(String[] args)  
  •     {  
  •         new ObjcpyDemo();  
  •     }  
  •   
  • }  



0002,jack




对象变量student2从studengt1复制得到,而且在student1值发生改变的同时,student2对象的属性值也相应的改变了,没有达到复制的目的。


可以使用Object.Clone()方法复制类对象的变量




3.再看一下字符串的拷贝


虽然String类型也是继承自Object,但对于字符串来说,情况显得有点特殊.
对于String类型的赋值是创建一个新的String对象,而不仅仅是将对象 引用赋值给对方.从这个意义上讲,对String的赋值更类似于基本类型.




代码:


  • public class StrcpyDemo  
  • {  
  •     public StrcpyDemo()  
  •     {  
  •         String s1 = "1";  
  •         String s2 = s1;  
  •         s1 = "2";  
  •         System.out.println("s2 = " + s2);  
  •     }  
  •   
  •     public static void main(String[] args)  
  •     {  
  •         new StrcpyDemo();  
  •     }  
  • }  




s2 = 1


总结:



对于基本类型,通过简单赋值就可以实现值变量的拷贝.

对象类型 变量的复制,不能和简单类型变量一般,而必须引用Object.Clone()方法,否则赋予的 只是对象的引用而已.

对于String类型的赋值是创建一个新的String对象,而不仅仅是将对象 引用赋值给对方.从这个意义上讲,对String的赋值更类似于基本类型.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马