您的位置:首页 > 编程语言 > Java开发

java数组内存分析

2014-07-05 20:37 197 查看
基本类型和引用类型数组的内存分析:

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







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







其实上面的图解还是有点问题:基本类型数组中的图一中,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字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: