易截截图软件、单文件、免安装、纯绿色、仅160KB

Java的浅拷贝和深拷贝(1)

 Java的拷贝分为深拷贝和浅拷贝
浅拷贝:把一个对象中所有的非static成员变量(包括对其它对象的引用,java中的引用相当于C/C++中的指针变量)都拷贝一遍,而不拷贝引用所指向的对象
深拷贝:把一个对象中所有的非static成员变量(包括对其它对象的引用)都拷贝一遍,引用所指向的对象也拷贝一份
这篇文章先讲述浅拷贝,深拷贝下篇文章讲述
一个类的对象如果想要具有拷贝的功能,比如符号如下条件:
   1.必须实现Cloneable接口(这个接口中没有定义方法,叫做标记接口)
   2.重写Object类的clone()方法,该方法实现的是浅拷贝
   3.在该类的clone()方法中的第一句,比如调用super.clone()来调用Object的clone()方法来实现拷贝
以下是一个浅拷贝的例子:
package com.test;
public class CloneTest
{
public static void main(String[] args)
{
Student s1 = new Student();
s1.setAge(20);
s1.setName("wudi");
School school = new School();
school.setName("Peiyang University");
school.setBornYear(1895);
s1.setSchool(school);
System.out
.println("s1:" + s1.getName() + " " + s1.getAge() + " "
+ s1.getSchool().getName() + " "
+ s1.getSchool().getBornYear());

try
{
//拷贝一个学生
Student s2 = (Student)s1.clone();
s2.setAge(21);
s2.setName("WUDI");
System.out
.println("s2:" + s2.getName() + " " + s2.getAge() + " "
+ s2.getSchool().getName() + " "
+ s2.getSchool().getBornYear());

System.out.println("after s2 changing some property:");
//通过学生s2改变了他所在学校的名称和成立时间
s2.getSchool().setName("Tianjin University");
s2.getSchool().setBornYear(1951);


System.out
.println("s1:" + s1.getName() + " " + s1.getAge() + " "
+ s1.getSchool().getName() + " "
+ s1.getSchool().getBornYear());
System.out
.println("s2:" + s2.getName() + " " + s2.getAge() + " "


相关文档:

java环境变量配置

 JAVA_HOME = F:\java\jdk  (jdk安装路径)
 PATH = .;%JAVA_HOME%/bin
 CLASSPTAH = .;%JAVA_HOME%/lib
检验是否配置成功:
   控制台cmd
   输入java出现配置信息说明配置成功。 ......

Java学习拾遗2

话题是由如下的事情引出的: public class StringTest {  public static void main(String[] args) {  String str1 = new String("abc");  String str2 = "abc";  if (str1 == str2) {             ......

Java读写cookie

Java读写cookie
/*
 * 写cookie
*/
Cookie namecookie = new Cookie("name",name);
Cookie passwordcookie = new Cookie("password",password);
Cookie optioncookie = new Cookie("option","1");
//生命周期    
namecookie.setMaxAge(60*60*24*365);
passwordcookie.setMaxAge(60*60* ......

J2EE、Java SE、Java EE、Java ME 区别

 Java SE=Java Standard Edition
Java EE=Java Enterprise Edition
Java ME=Java Mobile Edition
SE主要用于桌面程序,控制台开发(JFC)
EE企业级开发(JSP,EJB)
ME嵌入式开发(手机,小家电) 
         目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Ja ......

Java的异常小结

 主要是举个例子说明一下什么用throws,什么时候用try-catch。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号