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

热点内容
有两个项目要部署在云服务器上 浏览:930
信源编译码器的作用 浏览:919
remove命令linux 浏览:599
php发送邮件链接 浏览:34
创维冰箱压缩机 浏览:869
nginxopenssl交叉编译 浏览:750
相机卡无法创建新文件夹 浏览:225
单片机照明控制系统程序代码 浏览:10
服务编程一体化 浏览:471
tx小霸王服务器是什么意思 浏览:545
计算机编程工龄工资怎么算 浏览:491
macandroid配置环境变量 浏览:854
做项目文件夹的图标 浏览:327
数控车床车轴编程教程 浏览:728
怎么解压截图软件 浏览:885
算法符号椭圆 浏览:174
网络蚂蚁app是什么 浏览:273
php面向对象编程开发 浏览:798
唱吧如何解绑其他app 浏览:318
程序员去工厂好吗 浏览:497