📜  java 堆示例 - Java (1)

📅  最后修改于: 2023-12-03 15:01:33.508000             🧑  作者: Mango

Java 堆示例 - Java

Java中的堆是运行时数据区的一部分,用于存储对象实例。堆内存被JVM管理,并在需要时进行自动内存回收。

创建对象并存储到堆中示例

下面是一个简单的Java程序,它创建了一个 Student 对象并将其存储到堆中。

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

public class Main {
    public static void main(String[] args) {
        Student s = new Student("John", 20);
    }
}

在这个示例中,我们创建了一个 Student 类,并在 main() 方法中创建了一个 Student 对象。这个对象(也就是s)被存储在堆中,因为它是一个类的实例。

Java 堆和栈的区别

Java中还有另一个称为栈的运行时数据区,它用于存储基本类型变量和对象引用。与堆不同,栈内存被JVM自动管理,并且在方法调用结束时自动释放。

下面是一个示例程序,它演示了栈和堆的区别。

public class Main {
    public static void main(String[] args) {
        int age = 20;        // 整型变量 age 存储在栈中
        Student s = new Student("John", age);   // 对象引用和对象数据存储在堆中
    }
}

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

在这个示例中,整型变量 age 存储在栈中,因为它是一个基本类型。对象引用 s 也存储在栈中,但对象数据(也就是 name 和 age)存储在堆中,因为它是一个类的实例。

总结

堆是Java运行时数据区的一部分,用于存储对象实例。与之相反的是栈,它用于存储基本类型变量和对象引用。Java中的堆内存由JVM管理,在需要时自动进行内存回收。