Java Integer與int


JAVA是面向對象的語言,在JAVA中,一切皆對象,因此,JAVA中有很多對象間的轉換方式,對象(類)封裝了自己的常用方法,但是 八大基本類型(char byte short int long float double boolean)不是對象,是變量,這是面向對象留下的問題,但是是對JAVA有益的補充


因此,Interger與 int的區別,就是類與變量的區別,理解這點,很多問題都很好理解,包括 ==與 equals的區別

JAVA是面向對象的語言,爲什麼不所有內容全是對象,而保留了八大基本類型,個人猜想,應該是八大基本類型在開發中,使用非常頻繁,如果以對象的形式(Integer)來使用,每次都要 new,使用麻煩,處理速度也慢,所以保存了八大基本類型


1 Integer

1.1 Integer概述

Integer類,在對象中包裝了一個基本類型的 int 值,Integer 類對象包含一個 int 類型的字段。此外,該類提供了多個方法,能在 int 類型和 String 類型之間互相轉換, 還提供了處理 int 類型時非常有用的其他一些常量和方法。

1.2 Integer類的構造方法

Integer類中的構造方法有一下兩個

Integer(int value):構造一個新分配的 Integer對象,它表示指定的 int值
Integer(String s):構造一個新分配的 Integer對象,它表示 String參數 所指示的 int值

Integer i = new Integer(100);  // 以 int 型變量作爲參數創建 Integer 對象
Integer i2 = new Integer("100"); // 以 String 型變量作爲參數創建 Integer 對象
int j = i ;  // j=100
int j2 = i2; // j2 = 100
``
1.3 Integer類的常用方法
方法 返回值 功能
intValue() int 以 int類型 返回 該Integer的值
toString() String 返回一個表示 該Integer值的 String對象
valueOf(String s) Integer 返回保存指定的 String值的 Integer對象
parseInt(String s ) int 將數字字符串 轉換爲 int數值

在實際的編程過程中,經常將字符串轉換爲 int類型的數值,或者將 int類型的數值 轉換爲對應的字符串

String str = "456";
int num = Integer.parseInt(str);//將字符串轉換爲 int類型的數值
int i = 789;
String s = Integer.toString(i); // 將int類型的數值轉換爲字符串
1.4 Integer的緩存
Integer i = 3;
Integer j = 3;
System.out.println(i == j); // true

Integer i = 3; 在編譯的時候,被翻譯成
Integer i = Integer.valueOf(3);
valueOf(int i)函數對在 -128~127之間的 int值進行緩存,j 直接取緩存中的 3,所以,i==j
valueOf(int i)函數的源碼

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}
1.5 警惕 Integer.MAX_VALUE 造成的死循環

2 Integer與 int 的區別

  • 類型不同 Integer是類,int是變量,Integer是int的包裝類
  • 聲明方式不同 類通過 new聲明,變量直接定義
  • 初始值不同 Integer的默認初始值爲null,int的默認初始值爲0
  • 存儲位置不同 Integer通過引用指向實例,具體的實例保存在堆中,int i =1;保存在堆(成員變量),棧(局部變量)
    使用方式不同 要作爲對象來處理,必須使用 Integer
    例:泛型定義:
    List<Integer> list = new ArrayList<Integer>();可以
    List<int> list = new ArrayList<int>();不行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章