例子
Integer a=1;
Integer b=1;
Integer c=128;
integer d=128;
System.out.println(a==b); //true
System.out.println(c==d); //false
原因:对于-128到127之间的值,valueOf()方法直接返回一个在Integer缓存数组中的Integer
对于超过这个范围的值,此方法会new出来一个新的Integer用来返回
基本数据类型:byte,short,int,long,float,double,char,boolean 他们之间比较应该用"==",比较的是值
引用数据类型:当他们用"=="比较的时候,比较的是他们在内存中的存放地址,
对于第二种类型,除非他们是同一个new出来的对象,他们比较后的结果为true,否则比较结果为false,因为每new一次都会开辟一个新的空间
==:比较的是两个字符串内存地址的数值是否相等,数据数值比较
equals:比较的是两个字符串的内容,属于内存比较
在Object类中的equals方法和"=="是一样的没有什么区别
而String类中,Integer类中等,是重写了equals方法,才使得equals和"=="不同
所以当自己创建类时,自动继承了Object的qeuals方法,
想要实现不同的等于比较,必须重写equals方法