Java实例化对象内存分配

1、堆内存与栈内存:
       如果想对对象操作的过程进行内存分析,首先要了解两块内存空间的概念:
堆内存:保存每一个对象的属性内容,堆内存需要用关键字new才能开辟。
栈内存:保存的是一块堆内存的地址。
堆内存很好理解,可能有人会有疑问为什么会有栈内存,举个例子,好比学校有很多教室,每个教室有一个门牌号,教室内放了很多的桌椅等等,这个编号就好比地址,老师叫小明去一个教室拿东西,老师必须把房间号告诉小明才能拿到,也就是为什么地址必须存放在一个地方,而这个地方在计算机中就是栈内存。

2、对象空属性:
我们先实例化一个对象,并对其的属性不设置任何值

public class Test{
    public static void main(String args[]){
         Book book = new Book();
         book.getInfo();
    }
}
运行结果如下:
name:null;price:0.0
其内存变化图如下: 

       使用关键字new就在栈内存中开辟一个空间存放book对象,并且指向堆内存的一个空间,此时并未对其赋值,所以始终指向默认的堆内存空间。

3、操作对象属性:
我们先声明并实例化Book类,并对实例出的book对象操作其属性内容。

public class Test{
    public static void main(String args[]){
         Book book = new Book();
         book.name = "深入理解JVM";
         book.price = 99.8;
         book.getInfo();
    }
}
编译执行后的结果如下:
name:深入理解JVM;price:99.8
内存变化图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值