A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 耿文达 于 2013-2-1 11:02 编辑

毕老师讲课中提到:成员变量在堆内存中,因为对象的存在,才在内存中存在;而局部变量存在于栈内存中,是这样吧?
那我想问一下:成员函数是不是也在堆内存中?那么成员函数中的局部变量在哪里?是堆内存还是栈内存?
举例代码如下:
  1. class Person
  2. {
  3.         int age;//这是一个成员变量
  4.         void shout()
  5.         {
  6.                 int age = 60;//这是函数内部又重新定义的一个局部变量
  7.                 System.out.println("oh,my god!my age is " + age);
  8.         }
  9. }
复制代码
上例中的int  age = 60 存放在哪里呢?请大牛指教,谢谢!

点评

问题解决,请注意将帖子修改成已解决。否则不加技术分。此贴我已经帮你修改。  发表于 2013-1-31 22:50

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

4 个回复

倒序浏览
成员变量在堆内存中,因为对象的存在,才在内存中存在;而局部变量存在于栈内存中,正确的。只要是变量,都在堆内存中。
成员函数不在堆内存中,而是在java的方法区中,成员函数的局部变量在堆内存中。

6597756961424254876.jpg (100.29 KB, 下载次数: 15)

6597756961424254876.jpg

QQ截图20130131180657.png (18.13 KB, 下载次数: 15)

QQ截图20130131180657.png

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
詹卓锋 发表于 2013-1-31 18:07
成员变量在堆内存中,因为对象的存在,才在内存中存在;而局部变量存在于栈内存中,正确的。只要是变量,都 ...

原来是这样,解答的非常详细,多谢了:handshake
回复 使用道具 举报
只需要记住:栈内存是由电脑自己来分配管理的,堆内存是需要程序员分配管理的。
比如用new关键字新建对象,Java自带内存垃圾清理功能,所以程序员一般可以不用管,c++中清理内存还需要用delete!
回复 使用道具 举报
不管堆内存还是栈内存,只要清析的知道要引用的是那个变量,如果不是很懂变量的名称请不要重叠
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马