==和equals的区别:
== 的使用
Java中8种数据类型(boolean,char,byte,short,int,long,float,double),比较的是它们之间的值是否相等。
引用数据类型(类类型,数组类型,接口类型),比较的是它们在堆区的内存地址是否相等。
equals的使用
equals是Object类中的一个方法。在Object方法中默认还是两个对象的==比较,比较的是内存地址是否相同。可以重写此方法。
包装类
装箱:基本类型转变为包装器类型的过程。装箱是通过调用包装器类的 valueOf 方法实现的。
拆箱:包装器类型转变为基本类型的过程。拆箱是通过调用包装器类的 xxxValue 方法实现的,xxx代表对应的基本数据类型。
基本类型和包装类类型的比较
1.值不同时,==和equals返回的都是false。
2.值相同时:
- 基本类型与基本类型,基本类型与包装类类型,使用==和equals返回true。
- 包装类类型与包装类类型,使用==返回false,使用equals返回true。
- 缓存中去的包装对象比较返回true(JVM 缓存部分基本类型常用的包装类对象,如 Integer 缓存 -128 ~ 127 )。
- 不同类型的对象对比,返回 false。
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2); //打印true
System.out.println(i3==i4); //打印false