Java中有种数据类型叫:引用类型。
这个数组就是引用类型。实际上 要用new什么什么来创建的都是引用类型。
什么是引用类型呢?
举例来说:你new一个{1,2,3}数组,在计算机内存中实际上是这样操作的。
首先内存中会生成一个叫intArray的变量,并且在另一块内存中生成一个{1,2,3}数组。
然后把这个数组的内存地址值赋值给这个intArray的变量。所以说你传入函数的值只是那个数组的地址。
那这么做所出现的特性可以这么解释:
假如你在中国的南方海边(地址)建了一个叫广州(intArray)的城市, 后来你把它改名叫上海(arrays)并交给另一个人(change())打理,但他就觉得这个城市不配叫这个名字,于是他就在中国的东部临海(地址)新建了一座城市(new int[]),并把上海这个名字给了这个城市。
于是广州该多大就多大,就没在他手里改变过。他去了上海,所以广州是没变化的(所以显示的还是1,2,3)。
但如果他没有去东部新建上海这个城市,而是按你的要求把广州叫成上海来管理,使得广州的面积扩大了几十万平米(aArray[0]=7)。那么这个南方海边的城市就是实实在在的有了改变啦(显示成了7,2,3)。
就是说地址就是在那里,不管你换成什么名字,只要是在那个地址上的城市,它都是一个样的。
ps :
如果你直接打印这个数组变量的话,会打印出一串字符串,
像这样:“xx@xxx”
其中@符号前面的是这个实例的类型,@后面的是实例的内存地址的哈希值(你就把它当做是实例的地址吧,以后你学的更深的时候就会明白了)
这新建实例后,是另外的对象了,所以,不会随参数返回改变后的值 的。。。。。。。。。
没实例化则是原来的对象,所以会返回 。。。。。。。。。。。。