面试:equals和==的区别

equals和==的区别

一、对象类型不同

1、equals():是超类Object中的方法。
2、==:是操作符。

二、比较的对象不同

1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。
2、==:用于比较引用和比较基本数据类型时具有不同的功能。

三、运行速度不同

1、equals():没有== 运行速度快。
2、:运行速度比equals()快,因为只是比较引用。

扩展资料:

equals()和==的源码定义:

public boolean equals(Object obj) {
return (this == obj);
}

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

重写equals要注意以下五点:

1、自反性:对任意引用值X,x.equals(x)的返回值一定为true;
2、对称性:对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3、传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true ;
4、 一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变;
5、非空性:任何非空的引用值X,x.equals(null)的返回值一定为false 。

猜你喜欢

转载自blog.csdn.net/weixin_44436675/article/details/114990162
今日推荐