一個奇妙的java坑:Long 類型的比較


        Long userId=127L;
        Long authorId=127L; 
        System.out.println(userId==authorId);//true
        userId=128L;
        authorId=128L;
        System.out.println(userId==authorId);//false
        Long x=new Long(127);
        Long y=new Long(127);
        System.out.println(x==y);//false
        System.out.println(x.equals(y));//true

Long是引用類型,要比較兩個Long的大小,一定要用equals而不能用==

但是,當Long為常量且常量值小於一個字節時,兩個Long指向同一個常量內容;

當Long為常量且常量值大於一個字節時,兩個Long指向不同的常量內容。

最后總結,引用比較一定要用equals而不要用==

這個問題有多重要,在此說明一下。

我跟同學上線了一個話題帖子交流系統app,帖子是不是轉發的通過帖子的用戶Id與帖子的作者Id進行判等。到了127號用戶之后出問題了,用戶自己發的帖子顯示的卻是轉發的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM