Integer的equals和==

众所周知
对于基本类型而言,equals和==没有区别,但对于引用类型 equals比较的是内容(类型+值),==比较的是地址

一开始我以为像Integer这种包装类由于是引用类型,应该用equals比较 直到...

Integer a=20;
Integer b=20;
System.out.println(a==b);

结果为true!

难道 Integer和String一样,也有个常量池吗?
于是

 Integer a=new Integer(20);
 Integer b=new Integer(20);
 System.out.println(a == b);

果然结果为false!
原来Integer有个缓存的原理 如果值为[-127,128]之间 则不会创建对象,超过这个范围则会创建对象

Integer a=200;
Integer b=200;
System.out.println(a==b);

结果为false!

所以 以后在不确定Integer的值时老老实实用equals吧!

posted @ 2021-04-14 17:12  刚刚好。  阅读(188)  评论(0编辑  收藏  举报