首页 > 其他 > 详细

equals和==

时间:2019-05-06 21:48:06      阅读:239      评论:0      收藏:0      [点我收藏+]

equals的用法:

1、equals方法不能作用于基本数据类型的变量

2、引用数据类型:默认情况下,比较的是地址值。

      注意:该方法一般都会被重写,重写一般是自动生成的,重写之后用于比较成员变量的值是否相同;

      如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址。

例如:String、Date等类对equals方法进行了重写,比较的是所指向的对象的内容。

==的用法:

1、用于基本数据类型:比较的是值是否相同。

2、用于引用数据类型:比较的是地址值是否相同。

 

java当中所有的类都是继承Object这个超类的,在Object类中定义了equals方法,其源码如下:

public boolean equals(Object obj) {
  //this - s1
  //obj - s2
  return (this == obj);
}

可以看到,这个方法的默认行为是比较对象的内存地址值,一般意义不大。所以,在一些类库当中将此方法进行了重写,如String、Integer、Date,不再是比较类在堆内存中的存放地址,而是比较对象的成员变量值是否相同。

所以说,对于复合数据类型之间进行equals比较,在没有重写equals方法的情况下,它们之间比较的还是在内存中的地址值,跟==的结果相同;如果被重写,则根据重写的方法。、

 

补充:当equals方法被重写时,通常也会将hashCode方法重写,以维护hashCode方法的常规规定,该协议声明相等的对象必须具有相等的哈希码。

equals和==

原文:https://www.cnblogs.com/xbackjing/p/10822079.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!