导航:首页 > 编程语言 > 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相关的资料

热点内容
高中毕业当程序员 浏览:245
php标签属性大全 浏览:897
远程访问服务器ip地址 浏览:312
程序员吃鸡蛋炒菜 浏览:173
在哪里看俄罗斯电视剧app 浏览:308
怎么找数据库服务器地址 浏览:487
服务器调试怎么翻译 浏览:921
php如何处理ajax请求 浏览:211
php数组下标存在 浏览:707
php获取ip归属地 浏览:175
撩女程序员怎么办 浏览:508
百度服务器做什么 浏览:193
打开软件加速服务器有什么危害 浏览:87
php去除数组下标 浏览:794
ipad的app内容哪里看 浏览:284
遇见空间app在哪里 浏览:547
用命令对一个文件内容进行统计 浏览:317
华为交换机配置命令缩写 浏览:344
链接服务器出现问题怎么处理 浏览:834
华为手机怎么打开加密 浏览:676