基本概念
在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。
创建及初始化
- // 创建方式和数组相似 第一个中括号表示行,第二个中括号表示列
- // 表示创建了拥有3个子数组且每个子数组都有两个元素的二维数组
- int[][] arrarr1 = new int[3][2];
- // 表示创建了拥有3个子数组, 但子数组全部为null 的二维数组
- int[][] arrarr2 = new int[3][];
- // 静态初始化, 创建二维数组并进行赋值操作
- int[][] arrarr3 = new int[][]{{1,23},{23,56,1},{1,4,7}};
- int[][] arrarr4 = {{1,23},{23,56,1},{1,4,7}};
- // 特殊写法!!!
- int[] x, y[]; // 此处 x是一维数组, y是二维数组
复制代码 元素的获取
- // 获取单个元素
- System.out.println(arrarr3[1][2]);
- // 1
- // 查看arrarr2数组的元素
- for (int[] arr : arrarr2) {
- System.out.println(arr);
- }
- /*
- 获取到arrarr2中数组的地址值
- null
- null
- null
- */
- for (int[] arr: arrarr3) {
- for (int a: arr) {
- System.out.print(a + " ");
- }
- System.out.println();
- }
- /*
- 1 23
- 23 56 1
- 1 4 7
- */
复制代码 为子数组赋值
- arrarr2[0] = new int[2];
- arrarr2[1] = new int[4];
- arrarr2[2] = new int[1];
- for (int[] arr : arrarr2) {
- for (int tmp : arr) {
- System.out.print(tmp + "\t");
- }
- System.out.println();
- }
- /*
- 0 0
- 0 0 0 0
- 0
- */
复制代码 练习
二维数组打印一个10行的杨辉三角- /*
- 1
- 1 1
- 1 2 1
- 1 3 3 1
- 1 4 6 4 1
- ...
- 第一行一个元素, 第n行有n个元素
- 每行的第一个元素和第二个元素都是1
- 从第三行开始 对于非第一个和最后一个元素的元素:
- */
- yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
复制代码- int[][] yangHui = new int[10][];
- for (int i = 0; i < 10; i++) {
- yangHui[i] = new int[i + 1];
- for (int j = 0; j < yangHui[i].length; j++) {
- if (j == 0 || j == yangHui[i].length - 1) {
- yangHui[i][j] = 1;
- } else {
- yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
- }
- }
- }
- for (int i = 0; i < yangHui.length; i++) {
- for (int j = 0; j < yangHui[i].length; j++) {
- System.out.print(yangHui[i][j] + "\t");
- }
- System.out.println();
- }
复制代码 假设有一个矩阵为5行5列,该矩阵是由程序随机产生的100以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:- public class Test{
- public static void main(String[] args){
- int[][] matrix = new int[5][5];
- for(int i = 0; i < matrix.length; i++) {
- for(int j = 0; j < matrix[i].length; j++) {
- matrix[i][j] = (int)(Math.random() * 100);
- }
- }
- for(int i = 0; i < matrix.length; i++) {
- for(int j = 0; j < matrix[i].length; j++) {
- System.out.print(matrix[i][j] + "\t");
- }
- System.out.println();
- }
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |