黑马程序员技术交流社区
标题:
各种变量存储地点。
[打印本页]
作者:
李哲
时间:
2012-3-26 18:42
标题:
各种变量存储地点。
函数内部的变量,和语句中的变量,称为局部变量,都存在于栈内存中?
类类型变量也存在于栈内存中?
成员变量,作用于整个类中,在堆内存中存在,因为对象的存在而在堆内存中存在。那么,对象中也有方法(函数),这个方法(函数)中的变量,也应该是局部变量,存在于栈内存中?
那么内部类也相当于成员变量,存在于堆内存中?
类变量也就是静态的成员变量存在于方法区中?
类中的方法也存在于方法区中?那么方法中的局部变量是不是也存在于方法区中?
类变量随着类的加载而存在于方法区中,实例变量随着对象的建立而存在于堆内存中。实例变量也就是非静态成员变量?
类变量生命周期最长,随着类的消失而消失。 实例变量生命周期随着对象的消失而消失。类怎样才算消失?对象消失就是失去引用,然后被垃圾回收机制回收?
作者:
龚龙
时间:
2012-3-26 19:50
我是这么理解的,不知道对不对.
不管是什么位置的变量,你这个变量总要有个类型的,下面进入正题了.
类型分为二种:
第一种: 基本数据类型, 总共8种(byte short int float double long char boolean)
第二种: 除了上面8种(void 也算基本数据类型),其他都是引用数据类型 {:soso_e129:}
第一种都存在 栈内存中,第二种存在 堆内存中.
还有你说的类消失,我从没听说过,类的实例对象是编译后的二进制字节码文件(就是那些.class结尾的文件).让这个类消失,删除这个.class结尾文件?
作者:
黄长利
时间:
2012-3-26 21:11
我按照自己的理解回答一下吧,根据存放位置的角度来区分:
1.栈内存:用于存放基本类型的数据和对象的引用
2.堆内存:用于存放用new产生的数据
3.静态域:用于存放在对象中用static定义的静态成员
4.常量池:存放常量
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2