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 求给定范围的全体素数p的(p-2)的连乘积
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页