- 浏览: 135475 次
- 性别:
- 来自: 南宁
文章分类
- 全部博客 (137)
- J2SE API基础 (19)
- JAVA Structure/Algorithm (1)
- 设计模式及UML(pd/rose) (11)
- SSH (32)
- JPA/EJB/JSF (0)
- Jsp/Servlet (1)
- XML (0)
- DWR/Dojo/JQuery(Ajax) (1)
- Js/css/HTML (3)
- Java报表开发 (0)
- 网络协议及认证加密算法 (2)
- Java多线程网络编程 (1)
- Lucence (0)
- Oracle Developer (5)
- Oracle DBA (3)
- mysql/SQLServer/DB2 (5)
- Weblogic配置/调试 (0)
- Tomcat/JBoss/Websphere (10)
- Linux/Unix操作部署及shell编程 (9)
- C/C++编程 (4)
- 系统分析 (0)
- 项目管理(CVS&风险控制) (0)
- JUnit单元和J2EE集成测试 (2)
- 软设/招聘 (6)
- IT English (8)
- Mathematics/Data Mining (1)
- Android开发爱好 (1)
- Flash制作爱好 (0)
- Professional wisdom (4)
- 序言 (1)
- 聊天记录 (0)
- 理想 (3)
- 承诺 (0)
- oifuslfjsldkj_chatrecord (1)
最新评论
-
blues1021:
dafeiwudi 写道什么叫外频和陪频啊?一般电脑都显示主频 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系 -
dafeiwudi:
什么叫外频和陪频啊?一般电脑都显示主频,它不表示运算速递,我们 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系
测试主要部分代码:public class Employee implements Cloneable,
Comparable,
Serializable{
private String name;
private double payRate;
private int[] days;
public void displayDays(){ //显示数组
for(int i=0;i<5;i++)
System.out.println(this.days[i]);
}
public void setDays(int i,int day){//设置数组
days[i]=day;
}
public Object cloneLight() throws CloneNotSupportedException //浅拷贝方法
{
return super.clone(); //can use this to light copy
}
public Object clone()throws CloneNotSupportedException {//深拷贝方法
return new Employee (name, payRate, days);
/*可以将属性传入,因构造函数执行了,属性初始化了deep copy
或者使用:
Employee e1=(Employee)super.clone();
e1.days=days;//若为对象则e1.o1=(O1)o1.clone();
rerurn e1;
*/
}
/*其它设置方法略*/
public static void main(String[] args){
Employee emp1;
Employee emp2=new Employee(实参1,实参2,实参3);//根据构造方法传入,此处略
try{
//emp1=emp2;//引用的测试
// emp1 = (Employee)emp2.cloneLight();//浅拷贝的测试
emp1 = (Employee)emp2.clone();//深拷贝的测试
}
catch(Exception e){
e.printStackTrace();
}
emp1.setDays(0,11);//重新设置
System.out.println("Equals: " + emp1.equals(emp2));
System.out.println("emp1's days array is:");
emp1.displayDays();
System.out.println("emp2's days array is:");
emp2.displayDays();
}
测试结果表明:
首先回顾上面所有的比较的==和equals的区别,==用于基本数据类型比较值,对象时同一个对象(来自同一个地址引用)才true;
euquals比较的是两者的值或者是否是同一个类的对象(而不管是否来自同一个地址引用)。
但是他们都不会去比较对象里面的数组或对象是否也相等。
1.
引用赋值只是将一个相同的地址的值
浅复制的传递给了另外一个变量或对象
,故当用==时会相等。
2.
对象引用和浅拷贝都没有拷贝原对象的数组和对象成员
,但是浅拷贝与引用的不同是构造了另一个引用(而不是相同的引用),故当==时不等而equals时相等
;即java Object clone()若不重传入实参,且原对象中只有基本类型成员时可以实现对象拷贝分离。
3.对象深拷贝与上述1的拷贝的区别就是,
深拷贝连同原对象中的数组和对象成员(非基本类型)也一同拷贝了一份。
所以要使得两个对象维护自己的数据(而不是共享)则要用到深拷贝。
4.对象的构造,当然
如果原对象的构造数据不复杂也可以从新声明一个对象来实现
。
发表评论
-
java字符串按字符逆转和按单词逆转
2011-11-26 16:21 1536字符串的处理,经常在各类考试中用到,在网上搜索了下这方面的资料 ... -
JScrollPane和JTextArea,JMenuBar、JMenu和JMenuItem之间的组合关系
2011-08-09 18:19 1022package menuta; import java.aw ... -
利用EasyGridLayout API的帮助文档
2011-08-09 18:17 666一、对上一篇文章给出的EasyGridLayout源程序,加载 ... -
封装GridBagLayout的EasyGridLayout组件布局类和GridBagConstraints类字段解析
2011-08-09 18:15 1668一、实用源程序,可以用于自己的类库中调用相应的setConst ... -
Java2 五种界面布局类和实际中的使用
2011-08-09 18:14 1101(JPanel)Panel是一个轻量级的容器,由于不是顶层的容 ... -
Java2中的框架类和容器类、容器类与布局类的聚合关系
2011-08-09 18:12 879一: 布局中的JFrame与JPanel、Container ... -
Java2事件处理模型的解析和注意
2011-08-09 18:11 743/*<pre>伪源代码*/ DemoFlowLa ... -
Java2 I/O类使用总结(图解)
2011-08-09 17:58 589一、对象的读写(序列化):ObjectIO.jpg ... -
规范注释的说明形式和位置、@param参数、<pre>源代码示例
2011-08-09 17:52 1226/** * Returns a string that ... -
javaI/O中FileOut/InputStream借助ObjectOut/IntputStream写入和读取序列化之嵌套原理
2011-08-09 17:51 1045一、FileOutputStream和ObjectOutpu ... -
从低到高强制转换取模截断位数导出的java基本类型复习
2011-08-09 17:39 967一、强制类型转换中的低到高强制转换取模截断位数本质 ... -
java项目结构组织及类、成员的访问限定符
2011-04-08 20:05 1040main:一个项目中可有多个main方法但是,要选 ... -
类内、类外静态非静态方法的调用
2011-04-08 20:11 1025一:类内部 1.调用静态性相同的直接用。 2 ... -
hashcode方法
2011-04-08 20:17 591hashcode()是干什么用的? 首先hashcode是哈 ... -
JAVA中的接口与抽象类的区别记忆
2011-04-08 20:31 663接口与抽象类:抓住 ... -
各内部类的作用、定义、成员限制、访问总结
2011-04-09 00:56 787内部类的作用总括: 1.内部类可以独立的继承一个类和 ... -
java.util.StringTokenizer
2011-04-09 18:40 524一:单词: tokenization 标志化(token ... -
java dos下运行(有包)
2011-04-15 01:25 9761.使用notepad打开记事本编写类注意写正确。 publ ...
相关推荐
能够加强对java中equals与==区别的理解。
详细介绍和讲解Java中的==和equals区别
java中比较值大小,==和equals的区别,基本数据类型和引用数据类型比较值方法
==运算符和Equals()方法区别,从网上找到的,大家看一看吧~
==和equals方法究竟有什么区别? == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。 ...
java中equals和==的区别.doc java中equals和==的区别.doc
对于开发的程序员小伙伴,大家肯定对于==和equals不陌生,而且会经常用到他,那么又有几个能够说清楚了==和equals是怎么回事呢?他了呢两个有什么区别呢? 比较 == 比较的是栈中的值,基本数据类型是变量值,引用...
简单介绍java中的“==”和equals
equals和==的区别?equals与==的区别?equals和==有什么区别? Java解惑系列之一--equals和==之间究竟有什么区别 稍微学过一些java的同学都可能在网络上看到这样的一道题: 在java语言当中,equals和==之间究竟有...
主要介绍了java 中equals和==的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
【Java面试题】equals与==的区别
关于Java中==的用法与equals的用法,醉重要的是比较它们的不同之处
Java中的==与equals()实例方法Java中测试两个变量是否相等的方法有两个,一个是用==运算符,另一个就是object类提供的equals()方法。2
主要介绍了java基础之 “==”与“equals”区别详解,需要的朋友可以参考下
浅谈Java中的equals和==Java开发Java经验技巧共6页.pdf.zip
主要介绍了Java中==与equals的区别小结,本文总结结论:== 与 equals()比较的内容是不同的,equals()方式是String类中的方法,它用于比较两个对象引用所指的内容是否相等,而 == 比较的是两个对象引用的地址是否相等,...
接触c#一年了,一直没搞懂“==”和equals之间的具体区别,今天特意研究了一番,终于豁然开朗了,高兴中!给大家分享
Java面试题07.==和equals的区别.mp4
深拷贝和浅拷贝区别了解吗?什么是引用拷贝? Java 常见类 Object Object 类的常见方法有哪些? == 和 equals() 的区别 hashCode() 有什么用? 为什么要有 hashCode? 为什么重写 equals() 时必须重写 hashCode() ...