JAVA中的成员变量存储在堆内存中,而局部变量存在于栈内存中JAVA中的成员变量存储在堆内存中,而局部变量存在于栈内存中
首先,你自己也明白成员变量存在堆中,局部变量存放在栈中。
其次,栈:是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量
堆:是一个可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护),是一个运行时数据区。
最后:成员变量:是在程序加载时jvm就为它分配了内存;局部变量:是在执行到它的时候才会在栈中为它分配内存,一旦它脱离自己的作用域,那么内存就会被释放。
1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
2.成员变量存储在堆,局部变量存储在栈
3.存在时间不同
4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
JAVA中的成员变量存储在堆内存中,
而局部变量存在于栈内存中
这句话,,,不完全对,
jvm五大部分
(1). 堆,------------ 存放对象实例数据,数组开辟等等。是一块共享的区域(比较大)
(2). 虚拟机栈 ------- 线程私有,用来存放线程运行时的数据(也包含对象的引用,不包含对象的实例数据)
(3). 本地方栈 ------- 功能同虚拟机栈,只是用运行本地方法。
(4). 程序计数器 ----- 线程私有,用来标记当前线程运行到字节码的位置。
(5). 方法区 --------- 包含类的信息,常量池,常量一般存放在这里。
还有什么问题还可以追问,,,对你有帮助请采纳,,,哎纯手码。