黑马程序员技术交流社区
标题:
为什么ture
[打印本页]
作者:
孙宁洋
时间:
2013-6-5 06:48
标题:
为什么ture
Integer i1=3;
Integer i2=3;
System.out.println(i1==i2);
为什么ture
作者:
刘海东
时间:
2013-6-5 07:19
新版本的特性,当数值在byte范围内时,若数值已经存在则不另外重新开辟空间,这样可以节省空间。
毕老师的视频上讲过:
Integer a = 128;
Integer b = 128;
System.out.println(a==b);//结果为false
Integer c = 127;
Integer d = 127;
System.out.println(c==d);//结果为true,
作者:
金辉
时间:
2013-6-5 07:24
Byte,Short,Integer,Long,Character这5种整型的包装类是在对应值小于等于127时是在使用常量池池,所以常量池中只有一个3,而i1和i2是都指向3的。所以想等
Integer i3=128;
Integer i4=128;
System.out.println(i3==i4)//输出false
当大于128时,它们指向的就是封装的对象了,在堆内存中,i3和i4是指向不同对象的,所以为false
作者:
风云
时间:
2013-6-5 08:12
[code]1.Integer i1 = 100;
2. Integer i2 = 100;
3.
4. if (i1==i2) {
5.
6. System.out.println("i1==i2");
7.
8. } else {
9.
10. System.out.println("i1!=i2");
11.
12. }
13.
14. Integer i3 = 200;
15.
16. Integer i4 = 200;
17.
18. System.out.println(i3);
19.
20. System.out.println(i4);
21.
22. if (i3==i4) {
23.
24. System.out.println("i3==i4");
25.
26. } else {
27.
28. System.out.println("i3!=i4");
29.
30. }
31.
32. //结果是:
33. //i1=i2
34. //i3!=i4
java “==”就是比较引用,没有重载过
而由于-128至127内的Interger都是同一个对象引用,所以第一个比较式true
在-128至127范围之外的Interger 则不是同一个对象,所以比较为false ;
作者:
刘晓GGG
时间:
2013-6-5 14:12
这就是传说中的享元模式。对于这种基本类型数据要装箱成包装数据类型时,-128-127(1byte)之间的这些数,就将这个区间的数缓存起来,因为这些比较小的数用的比较多。下次需要用的时候直接去常量池中去拿,这样就可以节省内存空间。属于23种设计模式中的一种,比较简单。
作者:
殇_心。
时间:
2013-6-5 15:49
楼主,不要为技术分而刷问题 只要你有了实力,技术分就是浮云
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2