作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Java 如何将变量名与内存中的位置相关联?
我首先想到的是必须有一个用于所有变量名称的静态表,该表将变量名与其值或值的位置相关联。它是否存在,是否有此表的正式名称?
最佳答案
原始类型变量的值是一些数字,引用类型变量的值是一个引用(通常是内存地址)。
现在的问题是:给定变量的存储值在哪里。这取决于变量的种类——有局部变量、实例变量(字段)和类变量(静态字段)。
局部名称在编译期间解析。每个变量都成为方法中的第 i 个变量,它将作为第 i 个变量存储在某些方法调用的堆栈帧中。
对于实例变量,它会有所不同。字段名总是出现在字节码中(但通常不会出现在 JIT 编译器生成的机器代码中)。给定类的所有对象都具有相同的布局,因此类可以存储给定字段的偏移量 - 距对象开头的距离。解释器可以读取对象的地址并添加偏移量来计算变量存储的位置。
类变量类似于实例变量,但更简单。在这种情况下,类存储其变量的名称和值。
关于java - Java 如何将变量名与内存中的位置相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528093/
我是一名优秀的程序员,十分优秀!