关于java的变量存在内存的一个问题?
我在看到Java内存
这张图的时候:
https://blog.csdn.net/qq_5313...
有一个疑问:
比如,这里的第一个黄色框:
int i = 10
我们在写代码的时候int i = 10;
那么存在栈内存里面会把int , i , 10
都存在一块内存里面吗? 还是说只存10
呢?
回答:
只有 10
是数据,存在(栈)内存里int
是数据的类型,仅指明这块内存的长度是 4 个字节 == 32 bitsi
是程序员写给自己看的,仅代表这块内存的地址,等于程序员自己给地址起了个别名
回答:
基本类型的值直接就保存在变量中,所以都会在同一个局部变量内存里,如果有用到i的话,就从局部变量中取出i对应10压入栈。int i=10
的指令顺序大致会如下:
- bipush 10 #常量10 入栈
- istore_1 # 将栈中的场景存入到局部变量中索引为1的槽(假设i在索引为1的槽)
其中局部变量表的大小和索引顺序等信息,在编译阶段就已经确定了
以上是 关于java的变量存在内存的一个问题? 的全部内容, 来源链接: utcz.com/p/944741.html