java初学之栈区与堆区的理解

stacksegment(栈区)与heapsegment(堆区)初学者要理解的部分
stack(略写)heap(略写)
存放基础类型和引用类型的变量以及局部变量的值存放new出来的东西(对象和数组)

优点:存取速度快

缺点:存的数据大小和存在时间有限

缺点:存取速度慢

优点:数据大小和存在时间由操作者来确定(动态分配)

解析:

一.栈区和堆区的存储对象问题。(对照表格第二行) 

1 栈区存放基础类型:int,char,string等等都是基本类型,而所有的基本类型都存在栈区

 eg.int a=33; double b,String c这些都是存放在栈区。

2 栈区也存放引用类型的变量(基本类型之外的任何类型都是引用类型)

eg. Person one=new Person();

Person不是基本类型,所以它是引用类型(其他诸如Scanner,Arrays,Random都属于引用类型)

在这里,one是对象,是存放在栈区的,后面的new出来的东西(即new Person())是存在堆内存里的。

而方法的访问,是通过引用one这个对象名来指向堆内存里对象的内容值,通过方法(eg.one.get())来实现访问堆里的对象(或数组)内容值。

ps:在这里,个人觉得可以这样理解:栈区就是索引目录,堆区是实际内容。

3 栈区也存放局部变量。

首先什么是局部变量?

局部变量就是只在某个范围内起作用的变量。

eg.for(int i=0;i<7;i++){

        不管这个大括号里写什么,这个变量i(包括其名和值)都只在这个for循环里起作用。

}

总结就是任何大括号的前缀语句里的变量,都只在其后的大括号里起作用,这样的变量都是局部变量。(包括public static void main(String[] args){} ,比如创类文件public class XX{}和其他相关类文件,各个public内局部变量值的调用都是通过各种引用跳转来调用的(参考解析第2点))

二 栈区和堆区的优缺点。

通过表格,可以发现,他们的优缺点几乎是相对的。(即栈的优点是堆的缺点,反之亦然)

优缺点可以这样理解:

栈区:就是个客栈,当然来去方便快捷。

客栈里给你留着放东西的柜子就那么大,而且住的时间到了你就得滚蛋。

堆区:就是自己家房子,看电视做家务辅导孩子作业吃饭睡觉都可以,干这么多事情能不慢吗?

家里房子大小还不是看各人,你买多大就是多大,房子想住多久住多久

(即由自己来确定,类同表格就是堆空间大小和存在时间由操作者确定)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值