数组

tech2025-04-28  5

一维数组

一、数组的声明和初始化 声明方式:

String[] names; int age[];

静态初始化:初始化和赋值同时进行

names = new String[]{"aa","cc"}; //下面的声明和初始化不能分开进行 String[] ps = {"aa","cc"};

动态初始化:初始化和赋值分开进行

String[] ps = new String[3]; //3指的是数组的长度

注意:无论是静态初始化还是动态初始化数组一旦创建成功长度不可变。

二、调用数组中的元素 : 通过索引值调用数组中的元素。索引值(下角标)

是从0开始到(数组的长度-1) int[] numbers = {1,2,3,4,5};

取值:

int n = numbers[0];

赋值:

numbers[0] = 100;

三、数组的属性 – length(数组的长度)

String[] persons = {"小苍","小波","小饭"}; int len = persons.length;

四、数组的遍历 : 根据数组的索引值进行遍历

String[] persons = {"小苍","小波","小饭"}; for(int i = 0; i < persons.length; i++){ System.out.println(persons[i]); }

五、数组元素的默认值 byte short int long -> 0 float double -> 0.0 char -> \u0000 boolean -> false 引用数据类型(数组,接口,类) -> null

数组中常见的算法*

//求数值型数组中元素的最大值 int maxNumber = numbers[0]; for (int i = 1; i < numbers.length; i++) { if(maxNumber < numbers[i]){ maxNumber = numbers[i]; } } System.out.println("最大值:" + maxNumber); //求数值型数组中元素的最小值 int minNumber = numbers[0]; for (int i = 1; i < numbers.length; i++) { if(minNumber > numbers[i]){ minNumber = numbers[i]; } } System.out.println("最小值:" + minNumber); //求数值型数组中元素的和 ,平均数 int sum = 0; for (int i = 0; i < numbers.length; i++) { sum += numbers[i]; } System.out.println("sum=" + sum + " 平均数:" + sum/numbers.length); //数组的复制 int[] copyNumbers = new int[numbers.length]; for (int i = 0; i < copyNumbers.length; i++) { copyNumbers[i] = numbers[i]; } //输出数组中的元素 copyNumbers[0] = 100; //思考 :如果修改了copyNumbers中的数据,numbers中的数据发生变化没? 没 String str = Arrays.toString(numbers);//Arrays是操作数组的一个工具类 System.out.println("numbers=" + str); System.out.println("copyNumbers=" + Arrays.toString(copyNumbers));

三、二维数组

一 、二维数组的声明和初始化 数组的声明:

String[][] ps; String[] ps[]; String ps[][];

静态初始化:

String[][] ps = new String[][]{{"aa","110"},{"cc","111"}}; //下面的声明和初始化不能分开写 String[][] ps = {{"aa","110"},{"cc","111"}};

动态初始化:

String[][] ps = new String[3][2]; //3指的二维数组的长度,2指的是二维数组元素的长度 String[][] ps = new String[2][];//只是指明了二维数组的长度 ps[0] = new String[2]; ps[1] = new String[3];

二 调用数组中的元素 :根据索引值来赋值或者获取值

String[][] persons = {{“aa”,“10”},{“cc”,“20”}};

2.1获取值 : String name = persons[1][0]; //1指的是二维数组的索引值,0指的是二维数组元素的索引值 2.2赋值 : persons[1][0] = “abc”; 三 数组的属性 :length String[][] persons = {{“aa”,“10”},{“cc”,“20”}};

获取二维数组的长度 :persons.length;

获取二维数组元素的长度 :persons[0].length;

四 遍历二维数组

String[][] persons = {{"aa","10"},{"cc","20"}}; for(int i = 0; i < persons.length; i++){ for(int j = 0; j < persons[i].length; j++){ System.out.println(persons[i][j]); } }

五 二维数组元素的默认值 : null

Arrays工具类的使用

补充:binarySearch(int[] a, int key)这个方法就是放入一个数组和值,然后返回这个值在数组中的索引值,数组中不存在这个值就返回-1;

数组中的异常

数组中常见的异常:

1.数组下角标越界 : ArrayIndexOutOfBoundsException

原因 :索引值没有在合理的范围之内(0 ~ 数组的长度-1)

2.空指针异常 : NullPointerException

原因 :不能使用为null的变量去调用属性和方法。

代码:

//1.下角标越界:ArrayIndexOutOfBoundsException int[] numbers = new int[2]; //0 ~ 1是可以的 // System.out.println(numbers[2]); 编译错误:超出了索引值的范围 // System.out.println(numbers[-1]);编译错误:超出了索引值的范围 System.out.println("----------------------------------------"); // 2.空指针异常:NullPointerException String str = "aaa"; str = null; // System.out.println(str.toUpperCase());编译错误: 因为str的内容为null String[][] ps = new String[2][3]; // System.out.println(ps[0][0].toUpperCase());编译错误: 因为ps[0][0]的内容为null String[][] ps2 = new String[2][];//二维数组的元素的默认值为null System.out.println(ps2[0][0]);//编译错误:因为ps2[0]为null
最新回复(0)