equals与==判断相等
创始人
2024-01-29 23:28:21
0

一、==

== 判断相等,判断的是物理地址相等。

二、equals 判断相等

equals 与hashCode 都是Object的方法。

所有的类都继承于Object,如果不重写equals。equals判断相等,底层也是使用==来判断物理地址相等。

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

与equals伴随的是hashCode方法。(hashCode也是Object的方法)

 public native int hashCode();

hashCode返回的不是地址值,而是与地址相关的一个值,它也是唯一的,地址发生改变,hashCode码也会发生变化。

2.1 自定义类,equals判断相等

我们自定义了一个类,要求:如果2个对象的属性的值相等,则这两个对象就相等,需要重写equals方法。

自定义类,相等判断(根据属性的值),重写equals


class Man{private String name;public Man(String name) {this.name = name;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Man man = (Man) o;return Objects.equals(name, man.name);}@Overridepublic int hashCode() {return Objects.hash(name);}
}

2.2 hashCode 

hashCode 如果不重写,则调用Object的hashCode 方法

 public native int hashCode();

hashCode 与equals总是成对出现,java规范,如果两个对象通过equals判断相等, hashCode应该返回相同的哈希code码

三、String字符串判断相等

        // 方式一String name = "acd";

这个产生的数据,在jvm的常量池中。

// 方式二String name1 = new String("acd");

这种方式,产生的数据,存放在jvm的堆中。

做相等判断

       System.out.println(name == name1);System.out.println(name.equals(name1));

打印结果:

false
true

==,判断不相等,因为物理地址不一样,一个在常量池中,一个在堆中。

equals判断相等,因为字符串重写了equals方法,比较的是具体的值

相关内容

热门资讯

盘点当下最赚钱的无本创业小项目... 创业可以说是现在非常受欢迎的话题,很多人都会想要去创业,去实现自己的梦想,或者说是想改变一下自己的生...
适合小区创业的小本项目有哪些 ... 适合小区创业的小本项目有哪些?创业是每个人都想干的一件事,但是又不知到从何做起,大型的加盟项目投资费...
小区里的小本暴利项目哪些 有哪... 受到疫情影响,今年从年初开始,经济大环境就不算好。大家都在抱怨现在挣钱太难了,市场不景气,都没什么生...
千元小本创业有哪些 2018年... 经济形势的发展下,人民币逐渐贬值。对于创业者来说,想要找到1000元以下创业项目是比较困难的。因为一...
适合小本创业的五个好项目 推荐... 二胎政策开放很久了,儿童行业是具有潜力的市场,现在的家长都很疼爱自己的孩子,很注重孩子的早期教育培训...
2020年最好的创业项目是什么...   还不知道朋友看这里那今天我们就来说几个创业的好项目给大家分享:1、开宠物店,现在的年轻人压力大,...
小本创业代理好项目 小本创业代...  短视频,自媒体,达人种草一站服务最新移动电商创业项目:手机微信制作平台照片书照片书就是把您手机里的...
在四五线小城市有哪些城镇小本创... 如今的生活越来越好,每个人对美好生活的留念越来越重视了,很多人在生活中不管遇到什么样的事情,只要是值...
2019小本创业项目哪个比较好... 现在这些传统行业竞争压力大,投入成本也越来越高了。想要创业但是条件又有限,怎样才能以最小的成本去努力...
投入一千多 有必要理财吗 投入... 摘要:项目:防晒帽子、配饰作为一个赚女人钱的项目,卖防晒帽及配饰还是很不错的。有多少女性朋友,惧怕炎...