Java 學習記錄 43 — Autoboxing and Unboxing

張小雄
4 min readFeb 27, 2021

--

今天學 Autoboxing and Unboxing

String[] strArr = new String[10];
int[] intArray = new int[10];
ArrayList<String> strArrayList = new ArrayList();
strArrayList.add("Something");

簡單的展示 array 跟 arraylist

ArrayList<int> intArrayList = new ArrayList();

但是如果用 arraylist 放入 int 就會報錯

Type argument cannot be of primitive type

因為只能放 class 而不能放 primitive

class IntClass{
private int myValue;
public IntClass(int myValue) {
this.myValue = myValue;
}
public int getMyValue() {
return myValue;
}
public void setMyValue(int myValue) {
this.myValue = myValue;
}
}

創立了一個簡單的 class IntClass

ArrayList<IntClass> intArrayList = new ArrayList();
intArrayList.add(new IntClass(56));

現在放入 IntClass 就不會報錯了

疑,那 String 是class 嗎?

是的,在 intellij 用 ctrl + 左鍵 點 String 進去就可以看到

public final class String

但只是要放個 int 若都要這樣搞就很麻煩

Interger 是 class

int 則是 primitive

ArrayList<Integer> intArrayLists = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
intArrayLists.add(Integer.valueOf(i));
}

Integer.valueOf(i)

這就是 Autoboxing

把 int 轉成 Interger

不然 ArrayList<Integer>

for i 的 i 是 int 是放不進去 Integer 的

for (int i = 0; i < 10; i++) {
System.out.println(i + " --> " + intArrayLists.get(i).intValue());
}

intArrayLists.get(i).intValue()

這就是 Unboxing

把 Interger 轉回 int

Integer intValue1 = 54;
Integer intValue = new Integer(54);
Double doubleValue1 = 12.12;
Double doubleValue = new Double(12.12);

這裡展示了 Java 自動幫你處理的部份

intValue1 就是 intValue 的縮寫

doubleValue1 就是 doubleValue 的縮寫

Integer intValue0 = new Integer(55);
Integer intValue1 = 55;
int intValue2 = 55;
int intValue3 = intValue1.intValue();

所以這四行是一樣的功能, Java 幫我們處理複雜的部份

ArrayList<Double> myDoubleValues = new ArrayList<Double>();for (double dbl = 0.0; dbl <= 5.0; dbl += 0.5) {
myDoubleValues.add(dbl);
}
for (int i = 0; i < myDoubleValues.size(); i++) {
double value = myDoubleValues.get(i).doubleValue();
System.out.println(i + " --> " + value);
}

輸出:

0 → 0.0

1 → 0.5

2 → 1.0

3 → 1.5

4 → 2.0

5 → 2.5

6 → 3.0

7 → 3.5

8 → 4.0

9 → 4.5

10 → 5.0

--

--

張小雄
張小雄

Written by 張小雄

記錄成為軟體工程師的過程

No responses yet