簡體   English   中英

java原始類型數組對象與否?

[英]java primitive type array object or not?

考慮以下程序:

int[] arr= new int[2];
.....
System.out.println(arr.length);

在 JLS 中,我們讀取 java 中的對象是類或數組的實例。 但是,我們在這里看到原始類型的數組。 所以, int[2]也是一個對象。 但是,它是如何實現的呢? 有點像int=>Integerint[]=>Integer[]或其他什么? 順便說一下,它住在哪里? 在堆中還是在堆棧中?

在 Java 中,您只有原始對象或對對象的引用。*

int[] arr = { 1, 2 };
int i = arr[0];
assert arr instanceof Object; // true

arr是對以int為元素的數組的引用。

它是如何實現的?

int[]有它自己的類int[].class並且你的arr是該類的一個實例。

它就像 int=>Integer 或 int[]=>Integer[] 或其他什么?

Integer根本不相關。 要將int[]轉換為Integer[]您必須創建一個新數組並一一復制每個元素。

順便說一下,它住在哪里? 在堆中還是在堆棧中?

您可以假設所有對象都在堆上。 Java 8 可以使用轉義分析將一些對象放在堆棧上,但是我不相信它可以為數組類型做到這一點。

*唯一的其他類型是void ,它既不是原始類型也不是引用。 它有一個包裝器Void但你不能有一個void類型的字段或參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM