关于java的变量存在内存的一个问题?

我在看到Java内存这张图的时候:
https://blog.csdn.net/qq_5313...

有一个疑问:
比如,这里的第一个黄色框:

int i = 10

我们在写代码的时候int i = 10; 那么存在栈内存里面会把int , i , 10都存在一块内存里面吗? 还是说只存10呢?


回答:

只有 10 是数据,存在(栈)内存里
int 是数据的类型,仅指明这块内存的长度是 4 个字节 == 32 bits
i 是程序员写给自己看的,仅代表这块内存的地址,等于程序员自己给地址起了个别名


回答:

基本类型的值直接就保存在变量中,所以都会在同一个局部变量内存里,如果有用到i的话,就从局部变量中取出i对应10压入栈。
int i=10的指令顺序大致会如下:

  1. bipush 10 #常量10 入栈
  2. istore_1 # 将栈中的场景存入到局部变量中索引为1的槽(假设i在索引为1的槽)

其中局部变量表的大小和索引顺序等信息,在编译阶段就已经确定了

以上是 关于java的变量存在内存的一个问题? 的全部内容, 来源链接: utcz.com/p/944741.html

回到顶部