![](/img/trans.png)
[英]How to test if an object is primitive type or an array of primitive type in Java?
[英]java primitive type array object or not?
考慮以下程序:
int[] arr= new int[2];
.....
System.out.println(arr.length);
在 JLS 中,我們讀取 java 中的對象是類或數組的實例。 但是,我們在這里看到原始類型的數組。 所以, int[2]
也是一個對象。 但是,它是如何實現的呢? 有點像int=>Integer
或int[]=>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.