程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> arrays-java-adding groups of elements

arrays-java-adding groups of elements

編輯:編程綜合問答
java-adding groups of elements

想請問這個method: Arrays.asList() 參數值可以是一個數組,如果是對象數組,處理時沒有問題;但是在處理基本類型數組卻出現問題。對比結果簡化描述如下:
Integer[] moreInts = {6, 7, 8, 9, 10};
int[] arr = {11, 12, 13, 14, 15};

    System.out.println(Arrays.asList(moreInts)); -->可以返回數組
    System.out.println(Arrays.asList(arr));--> 系統給出的值卻是[[I@7f31245a]

我的問題在於:
1)Arrays.asList()返回的類型應該是List, 為什麼系統給的值卻是[I (代表是int 數組)
2)為什麼不能像處理對象數組一樣,返回這個數組?

多謝回答!

多謝回答

最佳回答:


Arrays.asList(T... a)是asList方法的簽名,這裡T是范型,也就是T extends Object,在java裡,primitive type和object並沒有繼承關系,而primitive數組是object的子類,你可以測試一下System.out.println(new int[10] instanceof Object);這會輸出true。
所以在第一個調用。傳入的參數被編譯器解釋成了Integer[]類型,而第二個調用被解釋成了int[][].
至於為什麼不能把primitive數組當成對象數組那樣處理,主要是因為向前兼容,在Java設計之初,primitive type就沒有當作object類型而是單獨處理的(原因是對象類型需要align,得另外占用空間). oracle現在希望能消除這個界限,在JDK 10我們也許可能看到primitive type和object的統一。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved