程序杂谈
2017-08-11 15:56
采纳率: 50%
浏览 1.6k
已采纳

JAVA中的成员变量和局部变量的位置

JAVA中的成员变量存储在堆内存中,而局部变量存在于栈内存中JAVA中的成员变量存储在堆内存中,而局部变量存在于栈内存中

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 追着梦跑 2017-08-12 02:37
    已采纳

    首先,你自己也明白成员变量存在堆中,局部变量存放在栈中。
    其次,栈:是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量
    堆:是一个可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护),是一个运行时数据区。
    最后:成员变量:是在程序加载时jvm就为它分配了内存;局部变量:是在执行到它的时候才会在栈中为它分配内存,一旦它脱离自己的作用域,那么内存就会被释放。

    点赞 打赏 评论
  • 陈言必行 2017-08-12 00:57

    1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
    2.成员变量存储在堆,局部变量存储在栈
    3.存在时间不同
    4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值

    点赞 打赏 评论
  • 鼠小 2017-08-12 02:22

    JAVA中的成员变量存储在堆内存中,
    而局部变量存在于栈内存中
    这句话,,,不完全对,

    jvm五大部分
    (1). 堆,------------ 存放对象实例数据,数组开辟等等。是一块共享的区域(比较大)
    (2). 虚拟机栈 ------- 线程私有,用来存放线程运行时的数据(也包含对象的引用,不包含对象的实例数据)
    (3). 本地方栈 ------- 功能同虚拟机栈,只是用运行本地方法。
    (4). 程序计数器 ----- 线程私有,用来标记当前线程运行到字节码的位置。
    (5). 方法区 --------- 包含类的信息,常量池,常量一般存放在这里。

    还有什么问题还可以追问,,,对你有帮助请采纳,,,哎纯手码。

    点赞 打赏 评论

相关推荐 更多相似问题