码迷,mamicode.com
首页 > 其他好文 > 详细

Integer的equals和==

时间:2021-04-15 12:17:29      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:结果   类型   超过   str   基本   比较   缓存   引用类型   内容   

众所周知
对于基本类型而言,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吧!

Integer的equals和==

标签:结果   类型   超过   str   基本   比较   缓存   引用类型   内容   

原文地址:https://www.cnblogs.com/wangstudyblog/p/14658901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!