java Integer

_唯_ 2017-07-25 09:10:57

执行结果怎么是true false呢
...全文
552 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
丶2p 2017-08-03
  • 打赏
  • 举报
回复
引用 1 楼 FMC_WBL 的回复:
==是判断 输出结果只能是true 或者 false
人家问的意思是为啥一个true,一个false。。。你这,,
「已注销」 2017-08-03
  • 打赏
  • 举报
回复
根据楼上的总结,应该是这样:a、b 引用的是一个 byte 能装得下的整数,由于这些数字被系统缓存,所有 a、b 引用了同一对象,其相等,是因为对象引用地址相等。c、d 是不同对象,因而不相等。Integer 不能用 == 比较,应该 equals 方法。
王大纯1x 2017-07-29
  • 打赏
  • 举报
回复
10楼正解....
liu15073458538 2017-07-29
  • 打赏
  • 举报
回复
liu15073458538 2017-07-29
  • 打赏
  • 举报
回复
The distinction is that valueOf() does not create a new object for values between -128 and 127 Integer类里定义了一个IntegerCache静态类,IntegerCache里有一个cache静态数组,将值在-128-127范围内的Integer缓存好,我们调用valueOf方法时,如果参数在-128-127范围内,则从cache里取得对应的Integer,否则调用构造函数新建一个Integer。 注释: 自动装箱规范要求boolean、byte、char<=127、介于-128~127之间的short、int和long被包装到固定的对象中。 (不包括Float、Double)。
zhailiangjava 2017-07-29
  • 打赏
  • 举报
回复
那这个要注意了 ,要转成数字再判断?
Inconsolable丶 2017-07-26
  • 打赏
  • 举报
回复
引用 6 楼 g495732477 的回复:
[quote=引用 1 楼 FMC_WBL 的回复:] ==是判断 输出结果只能是true 或者 false
一楼正解,看楼主所问问题关键![/quote] 二楼正解可以结帖了, 朋友你的理解能力捉急, 看下楼主的标题,要是问true false相关 , 那还会取这个标题么
一个帅逼 2017-07-26
  • 打赏
  • 举报
回复
自动拆装箱编译器会用integer.valueof()来创建实例,你去看看这个方法的源码就知道了
g495732477 2017-07-26
  • 打赏
  • 举报
回复
引用 1 楼 FMC_WBL 的回复:
==是判断 输出结果只能是true 或者 false
一楼正解,看楼主所问问题关键!
Jcon_ 2017-07-26
  • 打赏
  • 举报
回复
引用 1 楼 FMC_WBL 的回复:
==是判断 输出结果只能是true 或者 false
二楼正解!
110成成 2017-07-25
  • 打赏
  • 举报
回复
Java为-128到127设置了缓存,建议看下源码就知道了
xiaovhao 2017-07-25
  • 打赏
  • 举报
回复

/**
     * Returns an {@code Integer} instance representing the specified
     * {@code int} value.  If a new {@code Integer} instance is not
     * required, this method should generally be used in preference to
     * the constructor {@link #Integer(int)}, as this method is likely
     * to yield significantly better space and time performance by
     * caching frequently requested values.
     *
     * This method will always cache values in the range -128 to 127,
     * inclusive, and may cache other values outside of this range.
     *
     * @param  i an {@code int} value.
     * @return an {@code Integer} instance representing {@code i}.
     * @since  1.5
     */
    public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
源码,更清晰
「已注销」 2017-07-25
  • 打赏
  • 举报
回复
JDK1.5以后,自动装箱如果是一个字节,那么这个数据会被共享,不会重新创建,所以-128到127之间的int转integer后是会被共享的
小 明 2017-07-25
  • 打赏
  • 举报
回复
==是判断 输出结果只能是true 或者 false

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧