A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 行进中的蜗牛 中级黑马   /  2014-9-19 23:15  /  1084 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Integer i5 = 128;
  Integer i6 = 128;
  System.out.println(i5 == i6);false
  System.out.println(i5.equals(i6));true
  
  Integer i7 = 127;
  Integer i8 = 127;
  System.out.println(i7 == i8);  true
  System.out.println(i7.equals(i8));true

2 个回复

倒序浏览
本帖最后由 Huberry 于 2014-9-20 01:17 编辑

Integer类把byte类型范围内的这些使用频率高的小数据对象都缓存起来了,当你创建对象时,先到自己的缓存里面找,如果有,就让你指向这个对象,如果没有,就在堆内存中创建一个新对象

所以当你创建的对象值在byte范围内时,不管你创建多少个,相同的值都是指向同一个对象;
当你创建的对象超过byte范围时,你每创建一个对象,在堆内存中就会有一个新的对象
“==”比较的是引用数据类型的地址值
“eqauls”比较的是对象是否相同
回复 使用道具 举报 1 0
哦.............
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马