基于Java 数组内存分配的相关问题

可能Java 数组大家都很熟悉,最近我遇到了一个关于Java 数组内存分配的问题。呵呵。突然就发现许多书上“基本数据类型存储在栈内存当中,对象则保存在堆内存”这句话完全是错误的。下面是个简单的例子代码:

代码如下:
public class Test {    public static void main(String[] argv) {// 静态初始化数组String[] names = { "Michael", "Orson", "Andrew" };// 动态初始化数组String[] animal = new String[4];// 让animal 指向 namens 数组所引用的数组names = animal;

System.out.println(names.length);System.out.println(animal.length);    }}“Java 数组大小是不能改变的”这可能大家都听过,那上面这段代码就有问题了,animal [] 长度为4,而names [] 数组的长度只有3,但是经过一个赋值语句,两个数组的大小就都变为4了。这不是改变了数组的大小吗? 问题就这样挡在面前了!好吧,问问技术前辈吧,就这样对数组的存储方式有了全新的认识。下面是我的一点理解:(如果有错误的,刚好被大神你看到了,也请你能够指出来。)上面的的 names 和 animal 不代表这个数组对象,而仅仅是数组的变量而已,和C里面的指针是一样的,这样的变量叫做引用变量。数组对象是保存在堆内存当中,大小当然是不能改变的,但是数组变量却能够指向其他的数组对象,可以看看下面这个图:

以上是 基于Java 数组内存分配的相关问题 的全部内容, 来源链接: utcz.com/p/207926.html

回到顶部