Java中的==和equals总结

xiaoxiao2021-02-28  38

java笔试中常常遇到==和equals比较符,现在总结如下,如有错误,欢迎指正。

正常情况下

==

作用于基本数据类型的变量时,比较的是值作用于引用类型的变量时,比较的是地址

equals

equals不能作用于基本数据类型的变量比较如果没有对equals方法进行重写,则比较的是引用类型的变量所执行前的对象的地址诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容

特殊情况

Integer中的== Integer中引入了Integer缓存,默认缓存-128~127之间的数字,这种 Integer 缓存策略仅在自动装箱(autoboxing)的时候有用(这相当于调用 valueOf 方法),使用构造器创建的 Integer 对象不能被缓存。 实例:

/* * 出现这种异常情况满足三个条件: * 1.Integer对象比较 * 2.==操作符 * 3.在范围-128~+127内 * 4.自动装箱或valueOf创建 */ Integer t1 = 127;//Integer t1 = Integer.valueOf(127); Integer t2 = 127;//Integer t2 = Integer.valueOf(127); System.out.println(t1==t2); //true System.out.println(t1.equals(t2));//true
转载请注明原文地址: https://www.6miu.com/read-2627275.html

最新回复(0)