首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java int 與 Integer 深度解析:自動拆裝箱、常量池與比較陷阱

     編輯:Java 綜合教學

int 與 Integer 核心差異

一、類型本質

  • int:基本類型,值類型,默認值 0,比較值。
  • Integer:包裝類,引用類型,默認值 null,比較地址;方法內變量需顯式初始化。

二、字符串轉數字

String s = "1";
int a = Integer.parseInt(s);        // 返回 int
Integer b = Integer.valueOf(s);     // 返回 Integer
Integer c = Integer.valueOf(1);     // 返回 Integer
// 隱式拆箱:int d = Integer.valueOf(s);  // 編譯器自動轉換

三、比較陷阱

代碼結果解析
int a=1; Integer b=1; a==btrueb 自動拆箱為 int 比較值
Integer a=new Integer(1); Integer b=1; a==bfalsea 在堆,b 在常量池,地址不同
Integer b=1; Integer c=1; b==ctrue常量池緩存 -128~127,同一對象
Integer d=128; Integer e=128; d==efalse超出緩存範圍,新建對象

四、正確比較 Integer 值

Integer a = new Integer(1);
Integer b = new Integer(2);
a.intValue() == b.intValue();  // true/false
a.equals(b);                   // 推薦,內部比較值

五、常用常量

int max = Integer.MAX_VALUE;  // 2^31-1
int min = Integer.MIN_VALUE;  // -2^31

六、使用場景限制

  1. 方法參數只接受對象類型。
  2. 泛型只支持對象類型(如 List<Integer>)。
  3. 數據庫字段可為 NULL,持久層實體類用包裝類接收 null。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved