java中的ArrayList的get()方法

sinat_33376798 2018-09-07 10:26:54

ArrayList<Integer> res = new ArrayList<Integer>();
res.add(-129);
res.add(-129);
for(int i = 0; i < res.size();i++){
if(res.get(i) != res.get(res.size()-1-i)){
return false;
}
}
return true;

一个ArrayList类型数组我想判断一下是否为回文,但是不知道为什么到那个判断语句的时候就直接符合条件了,望各位大神帮我这个小白解答一下~谢谢(我debug的时候把res.get(i)和res.get(res.size()-1-i)分别赋值给了两个Int类型变量,然而这样做就可以顺利判断正确那个if语句。百思不得其解,希望得到解答~谢谢
...全文
1110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2018-09-07
  • 打赏
  • 举报
回复
另外i > (res.size() / 2)的时候break就可以了。
stacksoverflow 2018-09-07
  • 打赏
  • 举报
回复
res.get(i).intValue() != res.get(res.size()-1-i).intValue()
Braska 2018-09-07
  • 打赏
  • 举报
回复
Integer整型包装类-128到127之间的可以直接比较 不在这个范围内的数据用equals比较
Mingyueyixi 2018-09-07
  • 打赏
  • 举报
回复


引用 4 楼 Mingyueyixi 的回复:
Integer包装类在实现的时候,做了一些优化,导致在-127到128的之间的数字,是直接从常量池拿来比较的,他们的引用地址自然是相同的,超过这个范围就从新分配了内存,引用地址是不同的。因此,Integer要用equal()方法比较,防止出现意外。不仅如此,包装类都应该使用equal方法比较是否相等,因为他们生成的毕竟是对象。

我的描述不一定准确,建议查找Integer这方面的资料,特别是其源码分析,能够很清楚的展示问题是怎么 来的。
Mingyueyixi 2018-09-07
  • 打赏
  • 举报
回复
Integer包装类在实现的时候,做了一些优化,导致在-127到128的之间的数字,是直接从常量池拿来比较的,他们的引用地址自然是相同的,超过这个范围就从新分配了内存,引用地址是不同的。因此,Integer要用equal()方法比较,防止出现意外。不仅如此,包装类都应该使用equal方法比较是否相等,因为他们生成的毕竟是对象。

58,453

社区成员

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

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