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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Java黑马 中级黑马   /  2014-8-30 14:31  /  2892 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在网上搜,什么答案都有,都蒙圈了

5 个回复

倒序浏览
我就想到哪说哪把
在方法外的全局变量(也可以叫成员变量)是随着类的加载而加载的,存在堆中。
只要是new出来的,都存在堆中。
在方法中的临时变量(局部变量),都是存在栈中,
常量,存在常量池。
调用方法,方法都是进栈,
String类型属于常量,null属于常量,
都是即兴想出来的,有问题大家指正,不足大家补充
回复 使用道具 举报
首先java中内存主要包含4块:
1:heap (堆内存)
2:stack(栈内存)
3:data segment(静态变量或是常量存放区)
4:codesegment(方法区).
1:堆内存中存放的是new出的对象,new出的对象只包含成员变量。
2:栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。
3:静态、常量区:存放的是静态变量(类变量)或是常量。
4:方法区:存放的是对象的方法。因此即使new出多个对象也是只是存在一个方法。

因此成员变量要分静态和非静态来区分
回复 使用道具 举报
【灰太狼】 发表于 2014-8-30 17:17
我就想到哪说哪把
在方法外的全局变量(也可以叫成员变量)是随着类的加载而加载的,存在堆中。
只要是new ...

学习了:P
回复 使用道具 举报
careit 发表于 2014-8-30 21:34
首先java中内存主要包含4块:
1:heap (堆内存)
2:stack(栈内存)

谢谢,学习了
回复 使用道具 举报
对象的非静态成员变量在堆中。静态成员在静态区(或者叫方法区)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马