【JDK】爲啥會有Integer.valueOf()和Integer.parseInt()這兩個功能幾乎一樣的方法嘞?

  在平常要將string類型轉化爲int類型時,直接使用Integer.valueOf()或者Integer.parseInt()就可以了,但是看Integer.valueOf()這個方法
在這裏插入圖片描述
???!!!你這不是直接調用了Integer.parseInt()嗎?,俄羅斯套娃??
  parseInt()的返回類型是int
  valueOf()的返回類型是Integer
  平時都是這樣做的

int i = Integer.valueOf(s);//1

Integer j =10;  //2
int b= j;

  這樣寫他並不會報錯。那我直接寫parseInt()豈不香也?valueOf()多餘之?
  其實(1)原本最正確的用法就是該用parseInt(),因爲parseInt()的返回類型是int,而之所以可以用valueOf(),是因爲jdk1.5之後實現自動拆裝箱,使得基本類型可以和其封裝類自由轉換,而自由轉換的的根本就在於valueOf()intValue()這兩個方法。
  何爲自動拆裝箱也?
  一般的類型我們在定義的時候都需要先new xxxx(),有八個大佬在我們平時用的時候就沒有,那就是八個基本類型,我們會直接int i = 0;,但是,java畢竟是對象語言,在集合類中我們其實是無法將int double直接放進去的,以爲他們不是對象,於是有了基本類型對應的封裝類,常見的就是int - Integer
  自動裝箱: 就是將基本數據類型自動轉換成對應的封裝類
  自動拆箱:就是將封裝類自動轉換成對應的基本數據類型

Integer integer=1; //裝箱
	int i=integer; //拆箱

//反向編譯之後,他其實是執行了下面的方法
Integer integer=Integer.valueOf(1); 
    int i=integer.intValue();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章