Java-equals()与 等于等于 的区别
原创约 765 字大约 3 分钟...
与==的区别.md
115-Java-equals()注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
- 理解equals()方法和==运算符的区别是非常重要的。
- 默认情况下(即没有被重写时)equals()只能比较引用类型,"=="既能比较引用类型又能比较基本类型。
- equals()方法从Object类继承,即比较对象引用的值
- 一般都被子类方法覆盖,不再比较引用的值
- "=="运算符:
- 比较基本数据类型:相当于算术等号
- 比较引用数据类型:比较引用的值,不能被覆盖。
示例代码:
package Object类介绍;
public class TestEquals {
public static void main(String[] args) {
/**
* Object类的equals方法:
* 1.作用:用来比较两个对象是否相等
* 2.比较原理:比较两个对象的hashCode
*/
Object o1 = new Object();
Object o2 = new Object();
System.out.println("o1.equals(o2)? " + o1.equals(o2));//false
o2 = o1;
System.out.println("o1.equals(o2)? " + o1.equals(o2));//true
Double d = new Double(12.345);
Double a = 12.345;
double b = 12.345;
Float c = 12.345F;
System.out.println(a.equals(b));//true 类型相同,并且比较的是值
System.out.println(a.equals(d));//true 类型相同,并且比较的是值
System.out.println(d.equals(b));//true 类型相同,并且比较的是值
System.out.println(a.equals(c));//false 类型不同
System.out.println(c.equals(b));//false 类型不同
Double d2 = new Double(789);
Double d3 = new Double(789);
System.out.println("d2 == d3 ?" + (d2 == d3));//false 比较的是地址
System.out.println(d2.equals(d3));//true
/**
* 比较两个对象是否相等:用equals 和 ==
* 注意:
* 1.equals只能用来比较对象,因为equals是方法
* 2.==既能用来比较对象,又能用来比较基本类型
* 3.由于equals方法可以重写,所以不同类型的对象调用equals方法比较用的算法不同
* Object类型:equals方法比较的是两个对象的地址,底层调用 hashCode方法获取对象的地址之后再做比较
* Double类型:equals方法比较的是值
* String类型:euqals方法比较的是字符串的内容
* 自己定义的类型,equals方法比较什么可以自己写算法,不写的话比较地址
*
* “==” 运算符:
* 比较基本数据类型:相当于算术符号
* 比较引用数据类型:比较引用的值,不能被覆盖。
*
*/
System.out.println(d2 == d3);//false
System.out.println(d2);
System.out.println(d3);
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println("s1.equals(s2)? " + s1.equals(s2));
}
}
关于此知识点比较优秀的博文
分割线
相关信息
以上就是我关于 Java-equals()与==的区别 知识点的整理与总结的全部内容,另附源码
Powered by Waline v2.15.4