数组都是引用类型的。你可能当时没有搞明白数组在内存中的结构。int [] arr={12,5};这里其实是相当于int [] arr=new int[2]; arr[0]=12; arr[1]=5;其实左边的arr在执行的时候,它是在栈内存的方法获取这个要看方法的名称开辟的空间里面的有一个arr,然后右边是new这个时候它就会在堆内存中开辟空间。我们以格子来说,是两行。其实这就是我们常说的实体。实体有默认的初始化值。另外实体它有内存地址值。假设这个内存地址是0x5523,这个内存地址值标识数据存储的位置。其实是把这个地址值赋值给了栈内存中的变量arr,这个时候arr=0x5523,然后arr就指向了堆内存中的实体。我画了一个图,希望能帮的上你。
|