uuuuuu10248 2020-12-18 15:11 采纳率: 60%
浏览 19
已采纳

Java中关于ArrayList类的一个问题,蹲一个大佬

这里为什么ss.get(0)==ss.get(1)为false呢?

不明白

求大佬们解答,蟹蟹!!

  • 写回答

6条回答 默认 最新

  • qq_25376897 2020-12-18 15:48
    关注

    几个知识点:

    1、==比较的是地址,存放的地址值不相同就是false。

    2、Integer是int的封装类,是对象,==对于对象是比较 地址 ,而int是基本类型,==就是比较值的大小

    3、ss.add(150) 这里其实是进行了自动封箱,即将int类型的150转成Integer(因为list<Integer>规定了里面的类型是Integer)

    4、int a = ss.get(0) 这里就反过来进行自动拆箱,将Integer转成int,所以下面a==b返回的是true(值相等)

    5、补充一点:对于Integer,当Int值范围在-128—127之间时,会通过一个IntegerCache缓存来创建Integer对象;当Int值不在该范围时,直接调用new Integer()来创建对象。

    意思是:如果上面的ss.add(150) 换成ss.add(1),那下面的ss.get(0)==ss.get(1)就是true,因为比较的是同一个缓存

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图