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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢晓明 中级黑马   /  2015-6-3 00:16  /  505 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte常量池面试题
          Integer i1 = new Integer(127);
          Integer i2 = new Integer(127);
          System.out.println(i1 == i2);  // false
          System.out.println(i1.equals(i2));  // true

          System.out.println("--------");

          Integer i3 = new Integer(128);
          Integer i4 = new Integer(128);
          System.out.println(i3 == i4);  // false
          System.out.println(i3.equals(i4)); // true
          Integer i5 = 128;
          Integer i6 = 128;
          System.out.println(i5 == i6);  // false
          System.out.println(i5.equals(i6)); // true

          System.out.println("--------");

          Integer i7 = 127;
          Integer i8 = 127;
          System.out.println(i7 == i8); // true
          System.out.println(i7.equals(i8)); // true

          结论:byte范围内的值(-128 ~ 127),java提供了一个常量池。直接赋值给Integer,是从常量池里面获取的。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

7 个回复

倒序浏览
不懂你要表达什么意思
回复 使用道具 举报
把我这小白给带沟里了
回复 使用道具 举报
kikt 发表于 2015-6-3 09:04
Integer类型的对象有一个“常量池”是从-128~127之间
这个范围内的数直接指向常量池,而不用重新开辟内存空 ...

错了应该是
new Integer(127)==new Integer(127)//false

1.png (3.91 KB, 下载次数: 3)

1.png

2.png (1.69 KB, 下载次数: 4)

2.png
回复 使用道具 举报
这个帖讲的不错!
回复 使用道具 举报
山崩地裂 发表于 2015-6-3 09:56
错了应该是
new Integer(127)==new Integer(127)//false

对象操作?也能行?你应该理解错了吧!
回复 使用道具 举报
kmlitheima 发表于 2015-6-3 10:01
对象操作?也能行?你应该理解错了吧!

可以,比较的是两个匿名对象的地址值
回复 使用道具 举报
山崩地裂 发表于 2015-6-3 10:06
可以,比较的是两个匿名对象的地址值

是啊,,当然不一样了。根本就不能做为引证!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马