今天在背八股文的时候见到这题,第一眼:简单送分题;再看一眼:好像不太理解。。。
兄弟们引以为戒,切勿眼高手低。
●
==:如果是基本数据类型,⽐较是值,如果是引⽤类型,⽐较的是引⽤地址
基本数据类型:byte,short,int,long,float,double,boolean
引用数据类型:比较堆内存中的地址是否相同
●
equals:具体看各个类重写equals⽅法之后的⽐较逻辑,⽐如String类,虽然是引⽤类型,但是
String类中重写了equals⽅法,⽅法内部⽐较的是字符串中的各个字符是否全部相等。
equals方法是Object类的一个方法,Java当中所有的类都是继承于Object这个超类。
JDK1.8 Object类equals方法源码如下,即返回结果取决于两个对象的使用==判断结果
public boolean equals(Object obj) {
return (this == obj);
}
但是在日常使用中,类经常会重写equals方法;比如:String类,虽然是引⽤类型,但是String类中重写了equals⽅法,⽅法内部⽐较的是字符串中的各个字符是否全部相等。
总结:
== 的作用:
基本类型:比较值是否相等
引用类型:比较内存地址值是否相等
equals 的作用:
引用类型:默认情况下,比较内存地址值是否相等。可以按照需求逻辑,重写对象的equals方法。