黑马程序员技术交流社区

标题: 为什么true [打印本页]

作者: 孙宁洋    时间: 2013-6-5 14:31
标题: 为什么true
Integer i1=3;
Integer i2=3;
System.out.println(i1==i2);
结果为什么ture
作者: 刘晓GGG    时间: 2013-6-5 14:37
    这就是传说中的享元模式。对于这种基本类型数据要装箱成包装数据类型时,-128-127(1byte)之间的这些数,就将这个区间的数缓存起来,因为这些比较小的数用的比较多。下次需要用的时候直接去常量池中去拿,这样就可以节省内存空间。属于23种设计模式中的一种,比较简单。
作者: Renica    时间: 2013-6-5 14:53
为了节约内存,当数据在-128~127之间时,他们都指向同一个地址。这个毕老师的视频里有讲的。
作者: 杨增坤    时间: 2013-6-11 23:41
==是比较的地址,因为它们指向的是同一个地址,所以是相等的,加入是String定义的两个字符串,那么它们用==来比较就是false,因为她们是各自占一个内存地址,如果用equals来比较,那么就是true,因为是比较的是内容,不是地址!希望对你们有所帮助!
作者: Heart    时间: 2013-6-12 18:05
   这就是所谓的享元模式。对于这种基本类型数据要装箱成包装数据类型时,-128-127(1byte)之间的这些数,就将这个区间的数缓存起来,因为这些比较小的数用的比较多。下次需要用的时候直接去常量池中去拿,这样就可以节省内存空间。属于23种设计模式中的一种,比较简单。
作者: oxf974025918    时间: 2013-6-20 00:38
毕老师视频中解释了,在-128~127都是true没在这个间就是false




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2