导航:首页 > 编程语言 > objectequalsjava

objectequalsjava

发布时间:2023-12-30 01:49:24

㈠ 深入java的equals方法,怎么比较两个对象的

当定义一个类时,首先这个类会继承Object类(所有类的父类)的equals方法,然后开发者可以根据具体业务场景去考虑要不要重写equals方法。

publicbooleanequals(Objectobj){
return(this==obj);
}

上面代码即是Object的equals方法的实现, == 判断,即两个对象的地址完全一样的时候才相等。

当开发者定义类时不重写equals方法,则实际调用中使用Object这个父类的equals方法实现。

下面看看String的equals方法:

publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
if(anObjectinstanceofString){
StringanotherString=(String)anObject;
intn=value.length;
if(n==anotherString.value.length){
charv1[]=value;
charv2[]=anotherString.value;
inti=0;
while(n--!=0){
if(v1[i]!=v2[i])
returnfalse;
i++;
}
returntrue;
}
}
returnfalse;
}

这就是String重写的equals方法,可以仔细看看,很有参考价值。

接下来写段类定义的代码:

publicclassPerson{
privateStringname;//姓名
privateintage;//年龄
privateStringspeciality;//特长

@Override
publicbooleanequals(Objectobj){
//两个对象是同一个时,直接returntrue
if(this==obj){
returntrue;
}
if(objinstanceofPerson){
//比较对象也是Person对象时,判断name和age是否都相同
Personp=(Person)obj;
returnname.equals(p.name)&&age==p.age;
}
returnfalse;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicintgetAge(){
returnage;
}

publicvoidsetAge(intage){
this.age=age;
}

publicStringgetSpeciality(){
returnspeciality;
}

publicvoidsetSpeciality(Stringspeciality){
this.speciality=speciality;
}
}

测试代码:

publicclassTest{

publicstaticvoidmain(String[]args)throwsIOException{
Personp1=newPerson("张三",20,"java");
Personp2=newPerson("张三",20,"python");

System.out.println(p1.equals(p2));
}
}

根据Person重写的equals方法可以知道,运行结果为 true

如果Person没有重写equals方法,那么会调用Object的equals方法,运行结果为 false

所以实际怎么比较两个对象这完全是看开发者也就是你自己的意思

㈡ java中equals使用方法

java中equals使用方法:

  1. equals 方法是String类从它的超类Object中继承的, 被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。

    对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。例如:

  2. s1=newString("abc");
    s2=newString("abc");
    s1.equals(s2)是true

3.对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。

classA
{
Aobj1=newA();
Aobj2=newA();
}
obj1.equals(obj2)是false
阅读全文

与objectequalsjava相关的资料

热点内容
一号玩家app怎么换绑 浏览:322
emm平台源码 浏览:328
从网页下载资料服务器地址 浏览:404
安卓用什么播放器可以看港剧 浏览:455
keil5一编译axf就缺失了 浏览:506
现代电机控制技术pdf 浏览:449
手机系统加密形同虚设是真的吗 浏览:739
电视怎么连接播放app 浏览:680
pdf怎么转换成word工具 浏览:865
c语言程序员成长 浏览:887
火影忍者手游助手app怎么下 浏览:832
1997年四川空气压缩机厂 浏览:161
思科配置保存命令是什么 浏览:11
python培训知乎 浏览:755
作业文件夹怎么收藏 浏览:529
安卓系统如何授权悬浮窗 浏览:977
压缩包加密可以用汉语吗 浏览:948
ip池源码 浏览:490
缓解压力大放松一下的地方 浏览:928
工厂哪里用压缩空气 浏览:328