原文网址:Java中==和equals有什么区别_IT利刃出鞘的博客-CSDN博客
简介
本文介绍java中==和equals的区别。
分享Java技术星球(自学精灵),有面试真题和架构技术等:https://learn.skyofit.com/
区别
区别是:一个是运算符,一个是办法。
==
比拟变量的值是否雷同。
- 如果比拟的对象是根本数据类型,则比拟数值是否相等;
- 如果比拟的是援用数据类型,则比拟的是对象的内存地址是否相等。
因为Java只有值传递,对于==来说,不论是比拟根本数据类型,还是援用数据类型的变量,其比拟的都是值,只是援用类型变量存的值是对象的地址。援用类型对象变量其实是一个援用,它们的值是指向对象所在的内存地址。
equals办法
比拟对象的内容是否雷同。
equals()办法存在于Object类中,而Object类是所有类的父类。在Object类中定义了equals办法:
public boolean equals(Object obj) { return (this == obj);}
- 如果类未重写equals办法
<!---->
- 调用equals时,会调用Object中的equals办法(理论应用的也是==操作符)
<!---->
- 如果类重写了equals办法
<!---->
- 调用equals时,会调用该类本人的equals办法(个别是比拟对象的内容是否雷同)。比方:
<!---->
- String:比拟字符串内容是否雷同;
- Integer:比拟对应的根本数据类型int的值是否雷同。