1: package Test_AutoBoxing;
2:
3: public class Test_Boxing
4: {
5:
6: /**
7: * @param args
8: */
9: public static void main(String[] args) {
10: // TODO Auto-generated method stub
11:
12: //對應的外包類別
13: Byte B = 1;
14: Short S = 2;
15: Integer I = 3;
16: Long L = 5L;
17: Float F = 6.0f;
18: Double D = 7.0d;
19: Character C = 'c';
20:
21: /**不支援AutoBoxing的做法(外包型別轉基本型別)*/
22: I = new Integer(3);
23: int tempi2 = I.intValue();
24:
25: /**支援 AutoBoxing(可直接設定)*/
26: I = 3;
27:
28: /**基本類型和外包類型轉型*/
29: //基本型態
30: //小轉大會自動轉型或加上強制轉型也可以
31: short s1 = 10;
32: double s = s1;//自動轉型
33: double ss2 = (double)s1;//強制轉型
34: //大轉小須強制轉型,沒有強制轉型會出錯
35: double bb = 10.9;
36: byte bbb = (byte)bb;//強制轉型
37:
38:
39: //外包型態
40: //小轉大可用方法轉型或強制轉型
41: Integer I12 = 10;
42: Double D12 = I12.doubleValue();//方法轉型
43: Double D43 = (double)I12;//強制轉型
44: //大轉小只能用方法轉型,不可用強制轉型
45: Double d13 = 2.9;
46: Short s12 = d13.shortValue();
47:
48: Integer I123 = 10;
49: // Short S34 = (short)I123;錯誤,大轉小不能用強制轉型
50:
51: /**使用方法覆載會先找向上轉型再找autoboxing*/
52: setNum(I123);//方法2
53:
54: int tempi = 10;
55: setNum(tempi);//方法1
56:
57: Double ddd = 2.0;
58: setNum(ddd);//方法3
59:
60: }
61:
62: //方法1
63: static void setNum(int tempi)
64: {
65: System.out.println("方法1");
66: }
67: //方法2
68: static void setNum(Integer tempI)
69: {
70: System.out.println("方法2");
71: }
72: //方法3
73: static void setNum(double tempd)
74: {
75: System.out.println("方法3");
76: }
77:
78: }