java分配内存空间

Posted fanweisheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java分配内存空间相关的知识,希望对你有一定的参考价值。

分配内存空间

数组名=new 数据类型[数组长度];

new关键字用来实现为数组或对象分配内存 (堆内存)

数组具有固定的长度。获取数组的长度: 数组名.length

 

定义数组+分配内存空间

数据类型[]数组名=new 数据类型[数组长度];

定义数组时不指定长度,分配空间时指定数组长度;如:String cities[] = new String[6];

 

数组元素:

数组名[下标值];

数组下标从0开始  scores[0]=75;

 

数组的内存分配  栈内存和堆内存

如定义一个数组 int[]scores将在栈内存中为scores 分配内存空间,其值是一个不确定的值。

当执行语句scores=new int[5]时,将在堆内存分配连续5个空间,每个空间4个字节,用于存放整型数据,其初始值为0,然后将该段空间首地址,也就是第一个元素的地址,比如0*3000,赋给scores变量。该地址相当于一个指针,指向堆内存中分配的空间。此时堆内存中分配的5个空间可以分别使用scores[0],一直到scores[4]来表示。当执行四个赋值语句时,分别用指定值填充到对应元素位置。如果此时将null值赋给scores时,scores变量将不再指向任何位置,此时堆内存中分配的空间就变成了垃圾,由垃圾回收器在某一时间进行回收。

 

在方法中定义的变量,包括基本数据类型变量和引用数据类型变量,都将在栈内存中分配空间,当超过变量作用范围后,自动回收

 

我的总结:初始化=定义数组+分配空间+赋值

以上是关于java分配内存空间的主要内容,如果未能解决你的问题,请参考以下文章

java String分配内存空间备忘

JAVA里String数组在内存分配中分配的空间每个占几个字节?

Java堆空间Vs栈内存

Java内存分配(直接内存堆内存Unsafel类内存映射文件)

Java中成员变量分配在哪个空间?

Java静态内存与动态内存分配的解析