对象在堆中的存储方式。例如,自行车类可以这样定义:
public class Bicycle {
public int gear;
public int speed;
public Bicycle(int startSpeed, int startGear) {
gear = startGear;
speed = startSpeed;
}
public void setGear(int newValue) {
gear = newValue;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
}
然后我可以创建一个自行车对象:
Bicycle bicycle = new Bicycle(20,10)
然后这个自行车对象应该存储在堆中。但我不明白堆如何准确存储这些实例变量和方法,如速度和齿轮。我知道堆应该实现为树。那么对象如何存储在树中?此外,当您使用bicycle.speed
查找速度值时,时间复杂度会是多少?
答案 0 :(得分:11)
答案 1 :(得分:2)
Bicycle bicycle = new Bicycle(20,10)
引用自行车将存储在stack
中,而对象和实例变量将存储在heap
中,并且堆的地址在堆栈中分配,因此意味着说堆栈将链接到堆。
答案 2 :(得分:1)
首先,你应该用Java来理解Object的含义。
对象只是Heap中的缓冲区(内存区域)。该缓冲区或内存区域称为Object。
对象包含该类的所有非静态数据成员。
所有 -
Heap中的对象存储。
Class Area中的静态数据成员存储。
Stack中的引用变量存储。
方法区域中的方法(静态或非静态)存储。