基本類型和包裝類的不一樣使用場景

問題:將String類型的數字轉換爲數值類型,能夠使用包裝類的valueof()方法或者parseInt()等方法;使用valueof()方法返回的是包裝類型,使用parseInt()等方法返回的是基本類型,valueof()等方法底層調用parseInt()等方法;Java有自動拆箱和裝箱的機制,使用兩種方式中的任意一種均可以,可是在特殊狀況下不能隨意使用,好比:要進行頁面空值和0輸出時,Integer能夠爲空,而int爲0。java

Integer類的一些方法:數據庫

  • int i = Integer.MAX_VALUE();    //得到int最大值​
  • int i = String.ParseInt(Integer.toString(a,2));   //a的二進制
  • int i = Integer.parseInt("110",10) ;      //  字符串110的十進制數​​​
  • String str = Integer.toString(i);  

//這些都是類的靜態方法,不用New對象,直接使用
// 只有Character 沒有 toString() 方法,jvm

int num = 1;
string s1 = num + "";//先裝箱,調用toString方法,再相加
string s2 = num.toString();//基本類型不能調用toString方法

//總結:若是是包裝類型轉換爲字符串,使用toString方法比+「」方式好
Integer i = new Integer(1);
Map<String,Object> map = new HashMap();
map.put("num",i);
String iStr = map.get("num")+"";//map.get("num")

下面記錄他們的區別:函數

  • 包裝類型的默認初始值爲null,基本類型爲0、false等
  • 集合類中只能使用包裝類
  • 泛型中使用包裝類
  • 反射調用函數中使用包裝類
  • 數據庫查詢的結果爲null時,不能賦值給基本類型,應該使用包裝類
  • 使用>或<比較大小時會自動拆箱,使用==比較時不會
  • Java常量池中數值範圍爲[-128,127],使用字面值爲一個包裝類初始化,若是字面值在[-128,127]之間,jvm會在常量池中尋找該常量,那麼該包裝類的引用指向的是常量池中的一片區域,若是字面值超過這個範圍,會建立包裝類對象
    package test;  
      
    public class Test {  
      
        public static void main(String[] args) {  
            Integer i1 = 127;//指向常量池中的127  
            Integer i2 = 127;//指向常量池中的127
            System.err.println(i1 == i2);//指向同一內存區域,輸出true  
              
            i1 = 128;  //建立對象
            i2 = 128;  //建立對象
            System.err.println(i1 == i2);  //指向不一樣區域,輸出false
        }  
    }
相關文章
相關標籤/搜索