对象在堆中的存储方式。例如,自行车类可以被定义如下:对象如何存储在堆中?
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
来查找速度的值时,会是什么时间复杂度?
可能的重复[什么和堆栈和堆在哪里?](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap) – EkoostikMartin
@fge I了解堆应该作为树来实现。那么这个对象如何存储在树中? – Jude
堆只是一个巨大的字节数组。一个对象是一个结构 - 一系列被视为单一实体并被分配在一起的字段。要创建一个对象,你需要找到一个合适大小的“空闲”堆,设置对象头(指向它的类的指针和其他一些“簿记”信息),并执行类中描述的初始化。 –