二维数组
笔记Notes
- 二维数组
- 二维数组声明
- 二维数组静态初始化与二位初始化
- 二维数组元素赋值与获取
- 二维数组遍历
- 二维数组内存解析
- 打印杨辉三角
- Arrays工具类
- 数组中常见的异常
- 二维数组
- 二维数组的元素是一维数组
- 二维数组的声明和初始化
- String [][] persons;
- String persons2[][];
- String [] persons3[];
- 二维数组的初始化
- //静态初始化
- persons = new String[][]{{"小龙哥","110"},{"小仓","119"},{"小强","120"}};
- //声明和初始化不能分开
- int[][] numbers = {{1,2},{3,4},{5,6}};
- //动态初始化
- persons2 = new String[3][2];
- //3值得是二维数组长度,2指的是二维数组元素(一维数组)的长度
- //创建一个长度为3的二维数组,二维数组的元素为null
- persons3 = new String[3][];
- persons3[0] = new String[2];
- persons3[1] = new String[3];
- 获取二维数组的值,元素的值
String aString = persons3[2][2];
int a = ;
int b = persons3[0].length;
- 遍历二维数组的元素
//遍历二维数组
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers[i].length; j++) {
System.out.print(numbers[i][j] + " ");
}
System.out.println();
}
- 二维数组内存解析
- 打印杨辉三角
使用二维数组打印一个 10 行杨辉三角。
【提示】
1. 第一行有 1 个元素, 第 n 行有 n 个元素
2. 每一行的第一个元素和最后一个元素都是 1
3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
public class YangHui {
public static void main(String[] args) {
//创建二维数组
int[][] numbers = new int[10][];
//给二维数组的元素赋值
for (int i = 0; i < numbers.length; i++) {
//创建二维数组的元素(一维数组)
numbers[i] = new int[i + 1];
//给二维数组中的元素的第一个元素和最后一个元素赋值
numbers[i][0] = numbers[i][i] = 1;
//遍历二维数组中的元素(一维数组),不包括第一个和最后一个
for (int j = 1; j < numbers[i].length - 1; j++) {
numbers[i][j] = numbers[i - 1][j] + numbers[i - 1][j - 1];
}
}
//遍历二维数组
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers[i].length; j++) {
System.out.print(numbers[i][j] + " ");
}
System.out.println();
}
}
}
- Arrays工具类使用
int[] ns = {5,2,30,4,1,90};
int[] ns2 = {5,2,3,4,1};
//比较两个数组是否相等 : 比较的是内容,个数,顺序
boolean equals = Arrays.equals(ns, ns2);
System.out.println(equals);
//输出数组信息
String nsStr = Arrays.toString(ns);
System.out.println(nsStr);
//将指定的数值填充到数组中
Arrays.fill(ns, 100);
System.out.println(ns));
//对数组中的内容进行排序
Arrays.sort(ns);
System.out.println(ns));
//二分法查找 - 使用前必须先排序 - 如果找不到会返回负数
int index = Arrays.binarySearch(ns, 4);
System.out.println(index);
- 数组中常见的异常
//1.数组下角标越界 :ArrayIndexOutofBoundsException
int[] numbers = new int[2]; //索引值合理范围 :0 ~ 长度-1
Sy(numbers[2]); //发生了异常
Sy(numbers[-1]); //发生了异常
//2.空指针异常 :: NullPointerException
String str = "aaa";
str = null;
Sy());//发生了异常
String[] names = new String[2];
Sy(names[0].toUpperCase());//发生了异常
String[][] persons = new String[3][];
Sy(persons[0][0]); //发生了异常
Sy(persons[0].length); //发生了异常
- 习题:数组声明
声明:int[] x,y[]; 在给x,y变量赋值以后,以下选项允许通过编译的是:
a ) x[0] = y; //类型不符,x[0]为int类型,而y为引用类型
b) y[0] = x; //可以
c) y[0][0] = x; //类型不否,x为引用类型,而y[0][0]为int类型
d) x[0][0] = y; //x为一维数组
e) y[0][0] = x[0]; //可以
f) x = y; //类型不符,一个是一维数组,一个是二维数组
提示:
一维数组:int[] x 或者int x[]
二维数组:int[][] y 或者 int[] y[] 或者 int y[][]
总结Summary
- 二维数组遍历
- 二维数组内存解析
- 杨辉三角
- Arrays工具类
- 数组常见异常