数组及其在内存中的分配
Posted fanyizhan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组及其在内存中的分配相关的知识,希望对你有一定的参考价值。
1.一维数组
● 数组概念:数组是储存同一种数据类型多个元素的集合。也可以看成是一个容器。它既可以存储基本数据类型,也可以存储引用数据类型。
● 定义格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
● 数组的初始化、动态初始化
数组的初始化:数组必须先初始化,然后才能使用,就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
初始化分类:
(1)动态初始化:只指定长度,由系统给出初始化值;
(2)静态初始化:给出初始化值,由系统决定长度。
注意:这两种方式只能用一种,不能进行动静结合。
静态初始化有两种方式,具体格式如下:
(1)数据类型[] 数组名 = new 数据类型[]{元素,元素,……};
(2)数据类型[] 数组名 = {元素,元素,元素,……};
动态初始化格式:
数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
● 数组操作的常见问题:
NullPointerException: 空指针异常
ArrayIndexOutOfBoundsException: 数组越界异常
2.二维数组
格式1:数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数。
以下格式也可以表示二维数组(不推荐使用)
a.数据类型 数组名[][] = new 数据类型[m] [n];
b.数据类型[] 数组名[] = new 数据类型[m] [n];
格式2:数据类型[] [] 变量名 = new 数据类型[m] [];
格式3:数据类型[] [] 变量名 = new 数据类型[] []{{元素···},{元素···}....}
3.数组在内存中的分配
栈:存放局部变量
局部变量:在方法定义中或者方法声明上的变量。
堆:存放的是所用new出来的东西
特点:(1)每一个new出来的东西都会为其分配一个地址值;
(2)每一个变量都有一个默认的值
byte,short,int,long--0
float,double---0.0
char--‘u0000’
boolean--false
引用数据类型--null
(3)使用完毕就变成了垃圾,等待垃圾回收器对其回收。
方法区
本地方法区(和系统有关)
寄存器(CPU使用)
以上是关于数组及其在内存中的分配的主要内容,如果未能解决你的问题,请参考以下文章