黑马程序员技术交流社区
标题: 变量的复制 [打印本页]
作者: 何向阳 时间: 2012-12-11 12:44
标题: 变量的复制
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的赋值更类似于基本类型.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |