Java Integer比较
2020-04-13 16:00:51来源:博客园 阅读 ()
Java Integer比较
代码
1 @Slf4j 2 public class IntegerCompare { 3 public static void doCompare() { 4 5 Integer a = 127; //Integer.valueOf(127) 6 Integer b = 127; //Integer.valueOf(127) 7 log.info("\nInteger a = 127;\n" + 8 "Integer b = 127;\n" + 9 "a == b ? {}", a == b); // true 10 11 Integer c = 128; //Integer.valueOf(128) 12 Integer d = 128; //Integer.valueOf(128) 13 log.info("\nInteger c = 128;\n" + 14 "Integer d = 128;\n" + 15 "c == d ? {}", c == d); //false 16 17 Integer e = 127; //Integer.valueOf(127) 18 Integer f = new Integer(127); //new instance 19 log.info("\nInteger e = 127;\n" + 20 "Integer f = new Integer(127);\n" + 21 "e == f ? {}", e == f); //false 22 23 Integer g = new Integer(127); //new instance 24 Integer h = new Integer(127); //new instance 25 log.info("\nInteger g = new Integer(127);\n" + 26 "Integer h = new Integer(127);\n" + 27 "g == h ? {}", g == h); //false 28 29 Integer i = 128; //unbox 30 int j = 128; 31 log.info("\nInteger i = 128;\n" + 32 "int j = 128;\n" + 33 "i == j ? {}", i == j); //true 34 } 35 }View Code
结果:
Integer a = 127; Integer b = 127; a == b ? true 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer c = 128; Integer d = 128; c == d ? false 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer e = 127; Integer f = new Integer(127); e == f ? false 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer g = new Integer(127); Integer h = new Integer(127); g == h ? false 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer i = 128; int j = 128; i == j ? true
结论:
-
=比较的是引用
-
equal比较的是integer实际的值
第一个相等,第二个不相等,是因为Interger.valueOf内部做了缓存(-127,127)。
- a, b相同的引用。
- c,d超过了缓存的范围直接new,产生不同的引用,所以不相等。
Integer e = 127;
Integer f = new Integer(127);
e从缓存中读取。f则是新的对象,用=判断时候是两个不同的引用,所以不相等。
Integer g = new Integer(127);
Integer h = new Integer(127);
g和h都是新的引用。
Integer i = 128;
int j = 128;
把装箱的 Integer 和基本类型 int 比较,前者会先拆箱再比较,比较的肯定是数值而不是引用,因此返回 true
原文链接:https://www.cnblogs.com/Brake/p/12694602.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash