java数组内存分析

基本类型和引用类型数组的内存分析:

基本类型数组内存图解如下:

 

引用类型数组内存图解如下:



其实上面的图解还是有点问题:基本类型数组中的图一中,int[] a;此时a的值不是null,本质是栈内存中给出了4个字节的引用空间,里面没有值。等到下面s = new int[5]的时候s的4个字节的引用空间中才有了值,指向堆地址的值。引用类型数组的栈内存也是如此问题。


当然如果成员变量是引用类型,而且没有没有赋值的情况下,如果new对象出来的话,编译器会自动将类中的引用变量处理为默认值null。


null是一个特殊的引用值。局部引用对象只声明没初始化,此时没有引用值。没有引用值和引用值为null是两码事。

String a; String b = null;



String a=null;//分配了一个内存空间,里面存储了一个特殊的堆地址值null(该值也也就是说明没有分配堆内存空间)
String a;//分配了一个内存空间,里面没有存储任何地址值(特殊的null地址也没有),当然也就没有分配堆内存空间
String a="";//分配了一个内存空间,里面存储了一个具体的地址值(非null地址值),常量池中存储了一个空字符串对象(用双引号初始化的字符串不存储在常量池中,常量池属不属于堆有空再查)
String a = new String("abc")//分配了一个内存空间,里面存储了一个具体的地址值(非null地址值),分配了堆内存空间,堆内存空间里面存储的是abc字符串


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值