📅  最后修改于: 2023-12-03 15:01:33.508000             🧑  作者: Mango
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中还有另一个称为栈的运行时数据区,它用于存储基本类型变量和对象引用。与堆不同,栈内存被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管理,在需要时自动进行内存回收。