JAVA == 和 equal() 详细解释

关于 ==

  1. 当使用 == 判断两个主数据类型(byte,int,double … )的变量时, == 号判断的是两个变量的值是否相等。
  2. 当使用 == 判断除了两个引用类型的两个变量时, == 号判断的是两个引用变量所指向的地址是否相等。

关于 equals()

  1. equals()方法是超类Object的一个方法(),所有JAVA的类都继承于Object,意味着所有JAVA的类都有equals()这个方法,所以equals()方法不用于比较主数据类型,而是比较引用类型的。
  2. Object类型定义equals()方法比较的是两个引用所指向的地址,所以如果一个类没有重写equals()方法,使用equals()方法的就是比较两个引用所指向的对象的地址。
  3. 如果自定义的类要比较两个该类对象的属性是否相等,一般会重写equals()方法。Java的封装比如String重写了equals()这个方法,使得equals()比较的是字符串内容而不是地址,又比如Integer封装类比较的是值也不是地址。

注意

尽管一些著名的java书籍说明java的字符串常量的创建规则是内存中有则指向,无则新建,但是实际应用中实在是难以保证两个字符串在java虚拟机中的地址是同一个,所以,还是用equals()比较字符串吧!

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值