[置顶] Java千百问_06数据结构(016)_引用类型数组在内存中如何储存

点击进入_更多_Java千百问

1、存放基本类型数组在内存中如何储存

java的数组中可以存放引用类型。
存放引用类型的内存分布相比存放基本类型相对复杂。来看一段存储基本类型的程序:
了解什么是数组看这里:java中的数组是什么
了解数组在内存中的储存看这里:java数组如何存储在内存中

public class TestPrimitiveArray {
    public static void main(String[] args) {
        //1.定义数组
        int[] numbers;
        //2.分配内存空间
        numbers = new int[4];
        //3.为数组元素指定值
        for(int i = 1;i <= numbers.length;i++) {
            numbers[i] = i ;
        }
    }
}

内存分布如图:

[置顶] Java千百问_06数据结构(016)_引用类型数组在内存中如何储存_第1张图片

从图中可看出数组元素直接存放在堆内存中,当操作数组元素时,实际上是操作基本类型的变量。

2、存放引用类型数组在内存中如何储存

先来再看一段存储引用类型数组的实例:

class Person {
    public int age;
    public String name;
    public void display() {
        System.out.println(name + "的年龄是: " + age);
    }
}
public class TestReferenceArray {
    public static void main(String[] args) {
        //1.定义数组
        Person[] persons;
        //2.分配内存空间
        persons = new Person[2];
        //3.为数组元素指定值
        Person p1 = new Person();
        p1.age = 28;
        p1.name = "Miracle";
        Person p2 = new Person();
        p2.age = 30;
        p2.name = "Miracle He";
        persons[0] = p1;
        persons[1] = p2;
        //输出元素的值
        for(Person p : persons) {
            p.display();
        }
    }
}

元素为引用类型的数组,在内存中的存储与基本类型完全不一样。
此时数组元素存放引用,指向另一块内存,在其中存放有效的数据。如图:

了解数组和普通对象的引用变量:数组和普通对象的引用变量有什么区别

你可能感兴趣的:(数组存引用类型,引用类型数组内存存储,java数组对象,数组中对象储存,java引用类型数组)