导航:首页 > 编程语言 > javaequals比较

javaequals比较

发布时间:2023-06-07 00:56:36

Ⅰ 深入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中==和equal有什么区别

Java中==和equal的区别为:

1、== 表示 判断2个变量或对象实例是否指向同一个内存空间,equals()表示 判断2个变量或对象实例所指向的内存空间的值是否相同。

2、== 表示 对内存地址进行比较,equals()表示 对字符串的内容进行比较。

3、== 表示引用是否相同,equals() 表示值是否相同。

Ⅲ 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
阅读全文

与javaequals比较相关的资料

热点内容
什么是适合自己的app 浏览:451
云服务器怎么补漏洞 浏览:176
如何看自己的安卓是什么等级 浏览:633
被丁磊挖走的程序员 浏览:19
gsk980ta编程 浏览:507
单片机离线 浏览:84
解压助眠敲击外国长指甲 浏览:421
3次元编程 浏览:803
夫妻传送英文命令 浏览:316
程序员题代做 浏览:950
戴尔服务器怎么扩大内存 浏览:641
解压包密码消失 浏览:135
昆仑通态触摸屏用户窗加密 浏览:564
农信app怎么看日额 浏览:865
iphone备忘录包含视频无法加密 浏览:283
抖音快手红包源码 浏览:137
程序员资源分析 浏览:586
linux交换分区大小 浏览:922
mt怎么编译 浏览:337
qq邮箱打开pdf 浏览:461