数组
数组的定义
格式一:数据类型[ ] 变量名
例:int[ ] array
定义了一个int类型的数组,数组名为array
格式二:数据类型 变量名[ ]
例:int array[ ]
定义了一个int类型的变量,变量名为array数组
注:建议采用格式一定义数组
数组动态初始化
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
-
动态初始化
初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[ ] 变量名 = new 数据类型[数组长度];
例:int[ ] array = new int[10];
数组元素访问
- 数组变量访问方式
- 格式:数组名
- 数组内部保存的数据的访问方式
- 格式:数组名[索引]
内存分配
-
Java中的内存分配
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
数组在初始化时,会为存储空间分配默认值
- 整数:默认值是0
- 浮点数:默认值是0.0
- 布尔值:默认值是false
- 字符:默认值是空字符
- 引用数据类型:默认值是null
栈内存:存储的是局部变量,定义方法中的变量等。
使用完毕,立即消失
堆内存:存储new出来的实体、对象
每一个被new出来的实体、对象都有一个地址值,并对其初始化
使用完毕后,会在垃圾回收器空闲时回收
例:int[ ] array = new int[10];
int[ ] array存放在栈内存,new int[10]则存放再堆内存中。
静态初始化
-
静态初始化:
初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[ ] 变量名 = new 数据类型[ ]{数据1,数据2,数据3……};
例:int[ ] array = new int[ ] {1,2,3,4,5};
简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3……};
例:int[ ] array = {1,2,3,4,5};
数组操作的两个常见问题
-
索引越界:
ArrayIndexOutOfBoundsException
访问了数组中不存在的索引对应的元素,造成索引越界问题
-
空指针异常:
NullPointerException
访问的数组已经不再指向堆内存的数据,造成空指针异常
-
null
空值,引用数据类型的默认值,表示不指向任何有效对象
数组常见操作
-
获取数组长度
格式:数组名.length
例:array.length
-
数组遍历
int[] array = {1,2,3,4,5}; for(int i = 0; i < array.length; i++) { System.out.pringln(array[i]); } -
获取最值
思路:
-
定义一个变量,用于保存最大值(或最小值)
int max; -
取数组中第一个元素最为变量的初始值
int max = array[0]; -
与数组中剩余元素的数据逐一比对,每次比对将最大值保存到变量中
for(int i = 1; i < array.length; i++) { if (array[i] >max) { max = array[i]; } } -
循环结束打印输出结果
-
浙公网安备 33010602011771号