·一维数组
A:数组概念:
B:定义格式:用来存储同一种数据类型的容器------就类似于数学里的集合
举例:水杯中的水
1)数据类型[] 数组名;
int[] a;--------->定义了一个int类型的数组变量a(推荐使用)
2)数据类型 数组名[];
int a[];--------->定义了一个int类型的a数组变量
效果一样,只是读法不一样;推荐使用第一种
C:数组初始化:赋值
1)动态初始化:指定数组的长度,元素值由系统默认分配
数据类型[] 数组名 = new 数据类型[指定数组长度];
int[] arr = new int[3];
数据类型 数组名[] = new 数据类型[指定数组长度];
int arr[] = new int[3];
解释:
a:int:表示该数组元素都是int类型
b:[]:表示一维数组(一般情况:默认一维数组,除非指明为二维数组)
c:arr:表示数组名称
d:new:在对内存中开辟空间:创建对象
练习:
a:定义一个数组,分别输出该数组名称以及数组的元素,赋值,再次输出
b:定义两个数组,分别输出两个数组的名称以及元素,赋值,再输出
c:定义三个数组:定义第1.2个数组元素,并输出
将第1个数组的名称赋给第3个
通过第三个数组名称去给第一个数组元素赋值
2)静态初始化:指定数组的具体元素,数组长度由系统默认分配
数据类型[] 数组名 = new 数据类型[]{元素1,元素2...};
int[] arr = new int[]{1,2,3};
数据类型[] 数组名 = {元素1,元素2...};(推荐使用)
int[] arr = {1,2,3};
D:异常:Java中经常会出现两种异常
1)java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常;
原因:访问了数组中不存在的索引
int[] arr = {1,2,3}; //index = 0,1,2
System.out.println(arr[3]); //查看控制台,输出异常
2)java.lang.NullPointerException:空指针异常
原因:数组的对象为空,都不执行内存地址,还要输出元素
int[] arr = null; //数组为空
if(arr != null){
System.out.println(arr[0]);
}
E:练习
1)获取数组中的最大值和最小值
a:定义一个数组,静态初始化
b:在数组中找一个参照物,一般第一个元素,认为他是最小或最大
c:遍历其他元素:如果都大于他,那么该元素就最大
d:输出最大值(同理可输出最小值)
2)数组元素的逆序public class ArrDemo01 { //2)遍历数组 public static void printArr(int arr[]) { System.out.print("arr = ["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.println(arr[i]+"]"); } else { System.out.print(arr[i]+","); } } } //3)建立方法,求最大值 public static void max(int arr[]) { int max = arr[0]; //定义第一个元素为最大值 for (int i = 1; i < arr.length; i++) { if (max < arr[i]) { max = arr[i]; } } System.out.println("最大值为:"+max); } //4)建立方法,求最小值 public static void min(int arr[]) { int min = arr[0]; for (int i = 1; i < arr.length; i++) { if (min > arr[i]) { min = arr[i]; } } System.out.println("最小值为:"+min); } public static void main(String[] args) { //1)定义一个静态数组 int[] arr = {11,22,33,44,55}; //5)调用 printArr(arr); //打印数组 max(arr); //最大值 min(arr); //最小值 } }
a:定义数组,静态初始化
b:将0索引的元素和arr.length-1-0的元素交换
.....
做到arr.length/2
3)键盘录入一个数据,查询对应的星期public class ArrDemo02 { //2)输出数组 public static void printArr(int[] arr) { System.out.print("arr = ["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.println(arr[i]+"]"); } else { System.out.print(arr[i]+","); } } } //3)逆序 public static void exchange(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { //从第一个开始,一直取到中间 //交换 int temp = arr[i]; arr[i] = arr[arr.length - 1 -i]; arr[arr.length - 1 - i] = temp; } } public static void main(String[] args) { //1)定义数组 int[] arr = {11,22,33,44,55}; //4)调用 printArr(arr); //调用输出方法,先输出原始的数据 exchange(arr); //调用交换 printArr(arr); //再次调用输出方法,输出交换后的数据 } }