拆箱后的数据是基础数据类型。用 == 判断相等性,比较的都是数值,如果是字符,比较的是ASCII值
public static void main ( String [ ] args) {
int a = new Integer ( 65 ) ;
int b = 65 ;
char c = new Character ( 'A' ) ;
System . out. println ( a == b) ;
System . out. println ( a == c) ;
}
装箱后如果用 == 比较对象的内存地址,除Double、Float外,如数据值在缓存区范围内(-128~127),则相同;反之会重新生成对象,为不同。
Integer a = 12 ;
Integer b = 12 ;
System . out. println ( a == b) ;
Character c = 'A' ;
Character d = 65 ;
System . out. println ( c == d) ;
Integer a1 = 212 ;
Integer b1 = 212 ;
System . out. println ( a1 == b1) ;
Character c1 = 200 ;
Character d1 = 200 ;
System . out. println ( c1 == d1) ;
Double f1 = 12.0 ;
Double f2 = 12.0 ;
System . out. println ( f1 == f2) ;
调用equals方法时,当类型相同,且数值相同时,返回true;反之,返回false。当比较对方为基本数据类型时,会先进行自动装箱操作,后进行比较。
Integer a = 12 ;
int b = 12 ;
System . out. println ( a. equals ( b) ) ;
Character c = 12 ;
System . out. println ( a. equals ( c) ) ;