目录
一、数组的含义
数组是有序的元素序列。
若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
用于区分数组的各个元素的数字编号称为下标。
数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。
这些有序排列的同类数据元素的集合称为数组。
二、数组的作用
数组就是用来存储一批同种类型的数据的内存区域
三、数组的特点
1.数组是相同数据类型的元素的集合。
2.数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
四、数组的相关操作
4.1数组的定义
数组的定义分为静态初始化数组和动态初始化数组
4.1.1静态初始化数组
静态初始化数组是在定义数组时直接给数组赋值
语法格式:
数据类型[ ] 数组名=new 数据类型[ ]{元素1,元素2,元素3...};
eg:
int[] array=new int[]{1,2,3,4};
简化写法:
数据类型[ ] 数组名={元素1,元素2,元素3...};
eg:
double[] array1={1.1,1.2,1.3};
特点:在定义数组时同时为数组确定了数据
4.1.2动态初始化数组
动态初始化数组在定义数组的时候只确定数组元素的类型和数组的长度,之后再存入具体的数据
语法格式:
数据类型[ ] 数组名=new 数据类型[长度];
eg:
int[] array2=new int[5];
特点:开始只确定数组的类型和长度,不确定数组的具体值
数组在定义时,由于没有人为赋值,系统会自动为数组元素设置默认初始值,元素默认值设置规则为:
数据类型 | 明细 | 默认值 |
---|---|---|
基本类型 | byte、short、char、int、long | 0 |
float、double | 0.0 | |
boolean | false | |
引用类型 | 类、接口、数组、String | null |
int[] array2=new int[5];
System.out.println(array2[0]);
System.out.println(array2[1]);
System.out.println(array2[2]);
System.out.println(array2[3]);
System.out.println(array2[4]);
运行结果如下:
动态初始化数组的人为赋值:
赋值格式:数组名[索引]=值;
int[] array2=new int[5];
array2[0]=1;
array2[1]=2;
array2[2]=3;
array2[3]=4;
array2[4]=5;
4.1.3两种初始化数组的的使用场景总结、注意事项说明
1)静态初始化:一旦确定了数组数据的具体值,就可以用这种定义方式存储批量数据
2)动态初始化:适用于一开始不知道数组具体数据的情况
3)两种初始化格式的写法式独立的,不可以混用
int[ ] array=new array[3]{1,2,3} 这种写法是错误的
4.2数组的访问
数组是通过索引来进行访问的,索引值从0开始
访问格式:
数组名[索引];
eg:
int[] array2=new int[5];
array2[0]=1;
array2[1]=2;
array2[2]=3;
array2[3]=4;
array2[4]=5;
System.out.println(array2[0]);
System.out.println(array2[1]);
System.out.println(array2[2]);
System.out.println(array2[3]);
System.out.println(array2[4]);
输出结果为
4.3数组的长度属性
获取数组长度格式:数组名.length
int[] array=new int[]{1,2,3,4};
System.out.println(array.length);
运行结果如下:
4.4数组的遍历
数组的遍历就是将数组中的元素依次访问到(不一定每次都要打印出来)
可以采用for()循环对数组进行遍历
int[] array2=new int[5];
array2[0]=1;
array2[1]=2;
array2[2]=3;
array2[3]=4;
array2[4]=5;
for(int i=0;i<array2.length;i++){
System.out.println(array2[i]);
}
运行结果如下:
五、数组内存分析
5.1java的内存分析
java内存主要分为三个区域:方法区内存、栈内存、堆内存
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间中(存放class文件);
栈内存:方法代码片段在执行的过程中,会给该方法在栈内存分配内存空间,称为压栈;访法之行结束后,该方法所属的内存空间释放,称为弹栈;栈中还会存储局部变量;
堆内存:new出来的对象都在堆内存中存储
六、数组的常见问题
1.数组在访问时不要超过数组的最大索引,否则会出现数组访问越界异常
int[] array2=new int[5];
array2[0]=1;
array2[1]=2;
array2[2]=3;
array2[3]=4;
array2[4]=5;
System.out.println(array2[5]);
运行结果如下:
2.如果数组变量中没有存储数组地址的地址,而是null,在访问时会出现空指针异常
int[] array=new int[]{1,2,3,4};
array=null;
System.out.println(array.length);
运行结果如下: