乐趣区

关于java:Java中和equals有什么区别

原文网址:​​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 的值是否雷同。
退出移动版