java 中Long与long引起的bug

来源:互联网 发布:腾讯管家拦截域名解封 编辑:程序博客网 时间:2024/05/17 21:42

Long md=123456L;LinkedList<Long> list=new LinkedList<Long>();list.add(123456L);ListIterator<Long> it=list.listIterator();while(it.hasNext()){if(it.next()==md)//else//}

代码中一个隐藏了很长时间有BUG今天找到了。

问题出在了Long比较是否相等引起的,示示例如下:



我的本意是判断md是否在list中,如上所示,md=123456,在list中,但用上面的代码得到的结果是不在。


个人分析是因为对于Long类,使用==来比较会出问题,因为只有是同一个对象时,等号才会成立。

解决方法为将md声明为long,这样it.next()与md比较时,Long会转换为long。

原创粉丝点击