【最简单的问题】我都不会。。。 int a=1 如果栈里没有1,能否这样理解:先在栈里开放一个区域存储a,然后在再开放一个区域存储1,然后让a指向1?这是对的么?如果是的,a怎么指向的1?非常感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int a = 1;在栈的数据区给a分配一个内存地址然后在a的内存地址保存一个1(二进制00000000 00000000 00000000 00000001) 我能这样理解你的意思么:a并不是存储在栈内,而是放在另外一个地方,这个地方是专门存储像a这样的内存地址索引。只有1放会在栈内开辟内存存储。我知道我已经钻牛角夹了,但连这个都不知道根本没办法继续学java。 这个不存在指向不指向的问题,a的值就是1栈中存储a在内存中的地址a对应的内存地址中存1 差不多就是这个理解了,一个编译好的class,是找不到a的信息的,在运行过程中,跟它对应的是一个地址,在java里用索引表来管理这些地址,比如 a被编译为索引1,那么索引表的信息就是索引1 索引1对应的内存地址...当遇到a=1指令的时候,因为a被编译索引1,所以到索引表找到索引1对应的地址,然后在该地址上把1保存 a的值(即1)肯定在栈里面,a不在栈里面,a在地址在内存的代码段里面,a只是为了方便记忆 1存放的地方,如果是汇编,简单的说直接就是: 0x0001 = 1。其实具体汇编的操作是给内存中压栈一个整型数字1 内存分布图地址从小到大。0x0001 代码段 函数指令 a我觉的在这里存放 数据区 全局变量,静态变量 …… 常量区 字符 堆内存 程序员自己使用的,new出来的0x1110 栈内存 程序编译是就已经分配好地址了1 应该在这里 我觉得你好好看编译原理 a的值(即1)肯定在栈里面,a不在栈里面,a在地址在内存的代码段里面,a只是为了方便记忆 1存放的地方,如果是汇编,简单的说直接就是: 0x0001 = 1。其实具体汇编的操作是给内存中压栈一个整型数字1 内存分布图如下:地址从小到大。0x0001 1代码段 函数指令 a我觉的在这里存放 2 数据区 全局变量,静态变量 …… 3 常量区 字符 4 堆内存 程序员自己使用的,new出来的0x1110 5 栈内存 程序编译是就已经分配好地址了1 应该在这里 我觉得你好好看编译原理 排版不好,重新发下这个内存分布图如下:地址从小到大。代码段地址最小1代码段 函数指令 a我觉的在这里存放 2 数据区 全局变量,静态变量 3 常量区 字符4 堆内存 程序员自己使用的,new出来的5 栈内存 简单程序出错,求解 求助:一道华为面试题(关于类的初始化) 怎么把java程序做windows 批处理程序 给一个中文字符串 utf8编码后的 byte[] ,使用io流转成gbk编码的byte[],怎么弄 损失精度 网络传输的问题? 在用java的relection调用Object的某方法的时候,invoke(Object o,Object[] args)的args应该是什么参数? 关于类型转换问题——long-double-String? 怎么回没人回答呢???送分100!! 各位刚工作的时候编程水平是什么程度? 配置Structs2所有界面都404 急求助:关于编码的问题
在栈的数据区给a分配一个内存地址
然后在a的内存地址保存一个1(二进制00000000 00000000 00000000 00000001)
我能这样理解你的意思么:a并不是存储在栈内,而是放在另外一个地方,这个地方是专门存储像a这样的内存地址索引。只有1放会在栈内开辟内存存储。我知道我已经钻牛角夹了,但连这个都不知道根本没办法继续学java。
差不多就是这个理解了,一个编译好的class,是找不到a的信息的,在运行过程中,跟它对应的是一个地址,在java里用索引表来管理这些地址,比如 a被编译为索引1,那么索引表的信息就是
索引1 索引1对应的内存地址
...
当遇到a=1指令的时候,因为a被编译索引1,所以到索引表找到索引1对应的地址,然后在该地址上把1保存
a的值(即1)肯定在栈里面,a不在栈里面,a在地址在内存的代码段里面,a只是为了方便记忆 1存放的地方,如果是汇编,简单的说直接就是: 0x0001 = 1。其实具体汇编的操作是给内存中压栈一个整型数字1 内存分布图
地址从小到大。
0x0001 代码段 函数指令 a我觉的在这里存放
数据区 全局变量,静态变量
…… 常量区 字符
堆内存 程序员自己使用的,new出来的
0x1110 栈内存 程序编译是就已经分配好地址了1 应该在这里
我觉得你好好看编译原理
0x0001 1代码段 函数指令 a我觉的在这里存放
2 数据区 全局变量,静态变量
…… 3 常量区 字符
4 堆内存 程序员自己使用的,new出来的
0x1110 5 栈内存 程序编译是就已经分配好地址了1 应该在这里
我觉得你好好看编译原理
1代码段 函数指令 a我觉的在这里存放
2 数据区 全局变量,静态变量
3 常量区 字符
4 堆内存 程序员自己使用的,new出来的
5 栈内存