- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象引用
【例】:
public class ParamTest
{
public void change(Person person,Person person2)
{
person.name=lisi;
person2.name=wangwu;
}
public static void main(String []args)
{
Person person=new Person();
person.name=zhangsan;
Person person2=person;
ParamTest test=new ParamTest();
test.change(person,person2);
System.out.println (person.name);
}
}
class Person
{
String name;
}
结果:wangwu
Equals方法
格式:public boolean equals(Object obj)
Java语言规范要求equals方法具有如下的性质:
【自反性】:对于任何非空引用x,x.equals(X)将返回true
【对称性】:对于任何引用x和y,当有仅有y.equals(x)返回true时,x.equals(y)返回true;
【传递性】:对于任何引用x,y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也返回true;
【一致性】:如果x和y引用的对象没有发生变化,那么x.equals(y)重复调用将要返回同一结果;
【other】对任何非空引用x,x.equals(null)应该返回false。
Object类的equals方法:
所有类都从Object类中继承了equals方法
Object类中equals方法源代码如下:
public boolean equals (Object obj)
{
return this==obj;
}
Object中的equals方法时直接判断this和obj本身的值是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,所谓同一对象就是指是内存中同一块存储单元,如果this和obj指向的是同一块内存对象,则返回true,如果this和obj指向的不是同一块内存,则返回false,注意:即便是内容完全相等的两块不同的内存对象,也会返回false
如果是同一块内存,则Object中的equals方法返回true,如果是不同的内存,则返回false
何时需要重写equals方法:
如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equals方法
【example】:
public class EqualsTest
{
public static void main(String[] args)
{
A aa1=new A(2);
A aa2=new A(2);
System.out.println(aa1.equals(aa2));
}
}
class A
{
public int i;
A(int i)
{
this.i=i;
}
public boolean equals(Object obj)
{
A aa=(A)obj;//多态中的父类强制转换为子类
if(this.i==aa.i)
return true;
else
return false;
}
}
Result:true
【例题2】:
package com.huangyaqing;
import java.util.HashSet;
public class HashSetOverRide
{
public static void main(String[] args)
{
HashSet s=new HashSet();
student a1=new student(sun jianghua);
student a2=new student(sun jianghua);
s.add(a1);
s.add(a2);
System.out.println(s);
}
}
class student
{
private String name;
public student(String name)
{
this.name=name;
}
public int hashCode()
{
return this.name.hashCode();
}
pub
原创力文档


文档评论(0)