Java自动装箱后的值比较
生活随笔
收集整理的這篇文章主要介紹了
Java自动装箱后的值比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Integer類在自動裝箱后,用==來做比較時,并不總是像其他類一樣比較對象地址,數值較小時,它比較的是對象值。
當數值超過某個臨界點時,它才會比較地址。這個臨界點是127和-128。
假設有如下代碼:
Java代碼
Integer i1 = 127;
Integer i2 = 127;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
那么輸出結果是i1 == i2,比較的是對象值。
如果:
Java代碼
Integer i1 = 128;
Integer i2 = 128;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
則會輸出i1 != i2,比較的是對象地址。
設計者的思路大概是,用==來進行比較,大概一般都是要比較值,但這種寫法是不對的,這樣吧,當對象值在一個字節以內時,比較值和比較地址的成 本是一樣的,那我就給你比較值,但如果值大于一個字節,比較值的成本就大過比較地址了,我就老老實實比較地址吧
轉載于:https://blog.51cto.com/ethanzhou/1032973
總結
以上是生活随笔為你收集整理的Java自动装箱后的值比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你不得不知道的Visual Studio
- 下一篇: java美元兑换,(Java实现) 美元