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號用戶之后出問題了,用戶自己發的帖子顯示的卻是轉發的。
