兩個Integer類型數值比較大小的坑


先看一段代碼:

 1 Integer number = 127;
 2 Integer number2 = 127;
 3 Integer number3 = 128;
 4 Integer number4 = 128;
 5 if (number == number2) {
 6     System.out.println("Integer 取值在-128~127中,用'=='比較兩個值是否相等可行");
 7 }else{
 8     System.out.println("Integer 取值在-128~127中,用'=='比較兩個值是否相等不可行");
 9 }
10 if (number3 == number4) {
11     System.out.println("Integer 取值在-128~127中,用'=='比較兩個值是否相等可行");
12 }else{
13     System.out.println("Integer 取值在-128~127中,用'=='比較兩個值是否相等不可行");
14 }
15 
16 // 輸出結果:
17 // Integer 取值在-128~127中,用'=='比較兩個值是否相等可行
18 // Integer 取值在-128~127中,用'=='比較兩個值是否相等不可行

由此可以看出 , Integer取值在-128~127范圍內時 , 可以用  "==" 比較是否相等 . 因為 "==" 比較的對象地址的引用 , 又因為在這個范圍內, 是在常量池中取的值 , 並沒有重新的new對象 , 所以是可以用 "==" 比較.
當大於這個范圍后就會重新new對象 , 所以比較兩個Integer是否相等就需要用compareTo .

 1 Integer number5 = 888888;
 2 Integer number6 = 888888;
 3 if (number5.compareTo(number6) == 0) {
 4     System.out.println("Integer 大於-128~127這個范圍,用'compareTo'比較兩個值相等可行");
 5 } else {
 6     System.out.println("Integer 大於-128~127這個范圍,用'compareTo'比較兩個值相等不可行");
 7 }
 8 
 9 // 輸出結果:
10 // Integer 大於-128~127這個范圍,用'compareTo'比較兩個值相等可行

如果一個int類型和一個Integer類型比較是否相等, 可以用 "=="

 1 int number7 = 126;
 2 Integer number8 = 126;
 3 
 4 if (number7 == number8.intValue()) {
 5     System.out.println("一個int類型和一個Integer類型用'=='比較是否相等,可行");
 6 } else {
 7     System.out.println("一個int類型和一個Integer類型用'=='比較是否相等,不可行");
 8 }
 9 
10 // 輸出結果:
11 // 一個int類型和一個Integer類型用'=='比較是否相等,可行

 

總結: 
  1. 如果兩個int 類型的數值比較相等可以直接使用  "==" .

  2. 如果兩個Integer類型的數值比較相等在-128~127之間的可以用 "=="比較 , 否則用compareTo比較 .

  3. 如果一個int類型和一個Integer類型數值比較是否相等可以用 "==" . 

 


免責聲明!

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



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