注:我已对本文章进行了更新,劳烦移步。
java语言是典型的静态语言,因而,数组也是静态的,即当该数组被初始化之后,该数组的长度是不可变的。
java 语言的数组变量是引用类型,什么意思呢?意思就是,数组变量并不是数组本身,它只是指堆向内存中的数组对象。如:
这3个变量以及各自引用的数组在内存中的分配如图:
对数组变量来说,它并不需要进行所谓的初始化,只是让数组变量指向一个有效的数组对象即可。
对Java程序来说,所有的引用类型的变量都不需要经过所谓的初始化,需要进行初始化的只是该引用变量所引用的对象。
所有的局部变量都是存放在栈内存中,不管其是引用类型的变量还是基本类型的变量,都是存储在各自的方法栈区中;但引用类型变量所引用的对象(包括数组、普通的Java对象)则总是存储在堆内存中。
对于Java,堆内存中的对象(不管是数组还是普通Java对象)通常不允许直接访问,为了访问堆内存中的对象,通常只能通过引用变量。
数组变量都是存储在栈内存中的,但数组元素则作为数组对象的一部分被保存在堆内存中,无论它们是基本类型的数组元素还是引用类型的数组元素。