像这样声明的数组int [] [] [] arr = {{{{1,2},{3,4}},{{5,6},{7,8}}};在java中存储?

问题描述

通常,在java中,new关键字用于创建数组,但这也是一种做到这一点的方法,因此,我很好奇此数组将在Java中存储在堆栈中还是在堆内存中

解决方法

如评论中所述:

int[][][] arr = { { { 1,2 },{ 3,4 } },{ { 5,6 },{ 7,8 } } };

是语法糖吗

int[][][] arr = new int[][][] { { { 1,8 } } };

在两种情况下,变量arr都分配在堆栈上(如果它是局部变量);但是arr引用的实际数组对象是分配在堆上的。

,

数组是一个对象,所以

变量+指针进入堆栈

实际值进入堆

,

数组对象始终存储在堆内存中。