今天,我们首先要谈谈数组的内存空间。在谈这个之前,我们来说一下它的特点:它的长度是固定的。

我们举个例子来说一下它的内存空间。首先申明一个数组。 如 int num[ ]=new int[5]这是一个字符串数组。它的长度是5。这个数组占据了两个内存空间:一个栈内存,一个堆内存。其中str在栈内存中,new出来的在堆内存中。这边补充一个常识(只要是new出来的对象,java虚拟机都会在堆内存中开辟一个新的空间,创建一个新的对象)如下图

java数组的定义(java中数组二)(1)

其中默认值都是0,这个和数组的类型有关。其中int的默认值就是0。double的默认值0.0等等。如果我们给num[1]赋值,让num[1]=10那么是怎么变化的了如下图

java数组的定义(java中数组二)(2)

如果我们定义一个新数组int [ ]num1=num又会是什么样的了?

我们发现他们指向了同一个内存地址。这个和=有关。在这边如果堆内存中对象没有被引用,意思就是说栈内存中没有东西指向它,那么这个对象就是垃圾对象。这个会被JAVA垃圾清除机制自动清除。但是,可能不是立即清除。

java数组的定义(java中数组二)(3)

​​

,