彻底搞懂Java中equals和==的区别

举报
陈橘又青 发表于 2022/09/28 15:30:24 2022/09/28
【摘要】 ​目录一、数据类型和‘==’二、equals三、“==”和equals的区别一、数据类型和‘==’1. 基本数据类型(也称原始数据类型): byte,short,char,int,long,float,double,boolean等等    基本数据类型,用“==”比较的时候,比较的就是他们的值 比如 int a = 10; int b = 10; a == b?    10等于10,那么返...

目录

一、数据类型和‘==’

二、equals

三、“==”和equals的区别



一、数据类型和‘==’


1. 基本数据类型(也称原始数据类型): byte,short,char,int,long,float,double,boolean等等
    基本数据类型,用“==”比较的时候,比较的就是他们的值
 比如 int a = 10; int b = 10; a == b?    10等于10,那么返回的是True

2.引用数据类型: String,类,接口,数组,注解等等
    引用数据,用“==”比较的时候,比较的是他们的在内存存放的地址值


二、equals


1. equals是在Object类(为所有类的父类)中定义了的一种非静态的方法,需要用 对象名.equals(参数) 进行使用,所以equals只能比较引用数据类型,因为引用数据类型才能像类一样实例化出对象来使用方法,而基本数据类型不能进行实例化对象
2. equals方法在Object类中的源码为: public boolean equals(Object obj) { //this - s1 //obj - s2 return (this == obj);}
    由此可知equals默认情况下也是比较对象的内存地址值,所以实际情况下意义不大,一般我们的会对equals进行重写,使它一般用来比较对象的属性值是否相同
3. 对于引用数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被重写,按照重写的要求来。


三、“==”和equals的区别


1. 最本质的区别:== 是像 +、-、* 这类的运算符,可直接使用,而equals是一种非静态的方法,需要对象调用
2. == 既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型比较的是值,比较引用数据类型比较的是地址值
3. equals只能比较引用数据类型,且Object类的equals默认情况下是比较的是地址值,无意义,子类一般会重写,改为比较:属性值


如该文章能对你有所帮助,请帮忙点个关注!谢谢!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。