原文网址: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);}
  1. 如果类未重写equals办法

<!---->

  1. 调用equals时,会调用Object中的equals办法(理论应用的也是==操作符)

<!---->

  1. 如果类重写了equals办法

<!---->

  1. 调用equals时,会调用该类本人的equals办法(个别是比拟对象的内容是否雷同)。比方:

<!---->

  1. String:比拟字符串内容是否雷同;
  2. Integer:比拟对应的根本数据类型int的值是否雷同。