Java---堆栈的理解

堆栈的理解

  在JAVA中,把内存分为两种----1.堆内存;2.栈内存
***栈空间是由系统自动分配和释放的;
***堆空间是是手动申请和释放的。
优势:栈比堆存取速度快,数据可共享
注意: 栈是来存放对象引用,而堆是存放JAVA对象数据的
**栈中变量指向堆中变量-----可以理解为JAVA的指针
----在我们声明基本数据类型和对象的引用变量的时候,就会由栈内存进行分配。当在一段代码快中定义一个变量,Java就在栈中为其分配内存空间,若该变量退出作用域后,JAVA会自动释放该变量占有内存,另作他用。
**例如在我们定义一个变量 Object obj = null;这时就会由栈内存为其分配内存空间。
----当我们在new产生一个新的对象时,就是在堆内存中来为其分配内存空间,里面保存的就是对象的信息内容。
栈中主要存放一些基本类型的变量数据(int short long byte double float double boolean char)

特别注意!!!:常量是保存在常量池中的
String类型的数据是常量(String类是final类,不可被继承),还有被static final修饰了的基本类型数据是常量。
eg:int a =1 ----这个1在这里并不是常量,它是被分配在了栈中的,并且放在了一个指令指针上;当再次定义一个int b=1时,如果有相同的值1,那么这个b会直接指向这个值为1的指针,这样它们共享了数据,但它们之间任何一个改变了都不会影响到其他值。
不要把栈中保存的值和常量池中保存的值混淆了。
String常量对象是保存在常量池的,或被static final修饰的变量才算常量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值