原文网址: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 的值是否雷同。