java笔试中常常遇到==和equals比较符,现在总结如下,如有错误,欢迎指正。
正常情况下
==
作用于基本数据类型的变量时,比较的是值作用于引用类型的变量时,比较的是地址
equals
equals不能作用于基本数据类型的变量比较如果没有对equals方法进行重写,则比较的是引用类型的变量所执行前的对象的地址诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容
特殊情况
Integer中的== Integer中引入了Integer缓存,默认缓存-128~127之间的数字,这种 Integer 缓存策略仅在自动装箱(autoboxing)的时候有用(这相当于调用 valueOf 方法),使用构造器创建的 Integer 对象不能被缓存。 实例:
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