一 数组的概述及其定义格式
1 为什么要有数组
现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,
用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。
为了解决这种问题,Java就提供了数组供我们使用
结论:
数组是存储多个变量(元素)的东西(容器)
这多个变量的数据类型要一致
2 什么是数组
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
3 数组的格式
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
举个例子
int [] a; 定义了一个int类型的数组a;
int a[]; 定义了一个int类型的a数组;
我们推荐使用第一种定义方式
二 数组的初始化
java中的数组必须先初始化,然后才能使用。 所谓初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组的初始化分为动态初始化和静态初始化。
1 数组的动态初始化
(1)动态初始化的格式
数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例: int[] arr = new int[4]; 定义了一个int类型的数组arr,这个数组可以存放4个int类型的值。
(2)演示一下用动态数组来输出数组名称和数组元素
public class Mydemo1 {
public static void main(String[] args) {
int[] arr=new int[4];
for (int i = 0; i < 4; i++) {
arr[i]=i+1;
System.out.println("arr["+i+"]="+arr[i]);
}
}
}
(3)动态初始化数组的内存图
2 数组的静态初始化
(1)静态初始化的格式
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
举例: int[] arr = {1,2,3};
(2)静态初始化数组内存图
3 数组操作常见的两个小问题
(1)越界
在程序报错如下的时候 称为数组的越界
ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
(2)空指针异常
在程序报错如下的时候 称为空指针异常
NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
4 数组的常用操作
(1)数组的遍历
public class Mydemo1 {
public static void main(String[] args) {
int[] arr={
1,2,3,4,5};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
(2)获取数组中的最大值
public class Mydemo1 {
public static void main(String[] args) {
int[] arr={
2,4,20,2,1};int max=arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max){
max=arr[i];
}
}
System.out.println(max);
}
}
(3)数组的反转
public class Mydemo1 {
public static void main(String[] args) {
int[] arr = {
2, 4, 20, 2,