歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java 中Long與long引起的bug

Java 中Long與long引起的bug,代碼中一個隱藏了很長時間有BUG今天找到了。

問題出在了Long比較是否相等引起的,示例如下:

  1. Long md=123456L;  
  2. LinkedList<Long> list=new LinkedList<Long>();  
  3. list.add(123456L);  
  4. ListIterator<Long> it=list.listIterator();  
  5. while(it.hasNext())  
  6. {  
  7. if(it.next()==md)  
  8. //  
  9. else  
  10. //  
  11. }  

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

個人分析是因為對於Long類,使用==來比較會出問題,因為只有是同一個對象時,等號才會成立。

解決方法為將md聲明為long,這樣it.next()與md比較時,Long會轉換為long。

Copyright © Linux教程網 All Rights Reserved