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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李哲 中级黑马   /  2012-3-26 18:42  /  1778 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

函数内部的变量,和语句中的变量,称为局部变量,都存在于栈内存中?
类类型变量也存在于栈内存中?
成员变量,作用于整个类中,在堆内存中存在,因为对象的存在而在堆内存中存在。那么,对象中也有方法(函数),这个方法(函数)中的变量,也应该是局部变量,存在于栈内存中?
那么内部类也相当于成员变量,存在于堆内存中?
类变量也就是静态的成员变量存在于方法区中?
类中的方法也存在于方法区中?那么方法中的局部变量是不是也存在于方法区中?


类变量随着类的加载而存在于方法区中,实例变量随着对象的建立而存在于堆内存中。实例变量也就是非静态成员变量?

类变量生命周期最长,随着类的消失而消失。        实例变量生命周期随着对象的消失而消失。类怎样才算消失?对象消失就是失去引用,然后被垃圾回收机制回收?

2 个回复

倒序浏览
我是这么理解的,不知道对不对.
不管是什么位置的变量,你这个变量总要有个类型的,下面进入正题了.
类型分为二种:
第一种: 基本数据类型, 总共8种(byte short int float double long char boolean)         
第二种: 除了上面8种(void 也算基本数据类型),其他都是引用数据类型 {:soso_e129:}
第一种都存在 栈内存中,第二种存在 堆内存中.
还有你说的类消失,我从没听说过,类的实例对象是编译后的二进制字节码文件(就是那些.class结尾的文件).让这个类消失,删除这个.class结尾文件?
回复 使用道具 举报
我按照自己的理解回答一下吧,根据存放位置的角度来区分:
1.栈内存:用于存放基本类型的数据和对象的引用
2.堆内存:用于存放用new产生的数据
3.静态域:用于存放在对象中用static定义的静态成员
4.常量池:存放常量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马