【发布时间】:2021-12-02 03:17:18
【问题描述】:
在学校里,我的老师教我们对象和非静态变量(在 Java 中),她解释说,如果我们声明一个非静态全局变量,比如说在一个类中 int a 并创建一个类的对象 obj然后我们可以使用对象通过点运算符(obj.a)访问非静态变量a。
然后她说如果我们创建同一个类的另一个对象(比如obj1)并使用obj1.a1从中访问a,那么它将独立于obj.a,因为obj和obj1是不同的对象,因此obj.a 和obj1.a 具有不同的内存位置。
我的问题是,系统是否有对象的真实内存位置/地址? 就像,内存分配类似于为对象分配地址并在其下存储各种非静态变量(就像对象的内存位置被分区以适应不同的非静态变量)?还是该对象只是一个假设元素,用于指向和访问各种非静态变量,这些变量实际上在存储中具有真实的内存位置?
Tl;dr: 存储是为 object 分配内存位置,还是只为对象下的非静态变量分配内存位置,并且该对象是一个假设元素,不是在存储中有一个真实的内存位置?
如果回答这个问题的人对初学者友好一点,我将非常感激,因为我现在才 10 年级。
【问题讨论】: