首页编程java编程java equals比较的是什么?java中a.equal("b")和b.equal("a")有什么区别

java equals比较的是什么?java中a.equal("b")和b.equal("a")有什么区别

编程之家 2023-10-10 110次浏览

大家好,如果您还对java equals比较的是什么不太了解,没有关系,今天就由本站为大家分享java equals比较的是什么的知识,包括java中a.equal("b")和b.equal("a")有什么区别的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

java equals比较的是什么?java中a.equal("b")和b.equal("a")有什么区别

java中的==和equals有什么区别

1、java中equals和==的区别值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

java equals比较的是什么?java中a.equal("b")和b.equal("a")有什么区别

4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。

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

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

publicbooleanequals(Objectobj){

java equals比较的是什么?java中a.equal("b")和b.equal("a")有什么区别

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

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

.equals()到底是什么意思

.equals()在Java中判断是否相等,与==的区别是.equals()只判断值是否相等,不管两者是否存在同一地址。而==则是判断值与存在地址都得相等

扩展资料:

由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非我们在此类中重写equals。

另外,"=="比"equals"运行速度快,因为"=="只是比较引用。

java中a.equal("b")和b.equal("a")有什么区别

a.equal("b")表示a这个string是否等于字符串b;

b.equal("a")表示b这个string是否等于字符串a;

如果你是想要判定a和b两个string对象是否相同,建议不要加括号,写成:

a.equal(b)和b.equal(a)这个比较好。

a.equal(b)和b.equal(a)表达式表达的意思是一样的,都是为了判定a和b两个string对象是否相同,但是,前者表示a对象不能为空,否则会报错,后者表示b对象不能为空,否则报错

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

java外键用什么表示 Java实体类中的外键怎么写 为什么java的不能更新数据库?java操作数据库时,插入语句出现问题