java "==" 和 equals的区别

例子

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方法 

发布了58 篇原创文章 · 获赞 3 · 访问量 5715

猜你喜欢

转载自blog.csdn.net/hc1428090104/article/details/99217220