例子:
int[] arr = new int[2];
左边的内容在内存中会有一个区域来存储,也就是栈内存,这块区域用来存储局部变量,在栈内存的变量使用完毕,立即消失。
右边使用了new,因此存储在堆内存,堆内存是用来存储new出来的内容,数据初始化时会在存储空间添加默认值,如整型数组就时0。每一个new出来的东西都会有一个地址。丢内存的数据使用完毕,会在垃圾回收器空闲时被回收。
因此,int[] arr = new int[2];就是把右边的内存地址赋值给左边。
而arr[0]就是在左边的栈内存先根据arr的地址找到堆内存中new出来的数组,然后根据索引找数据。