zoukankan      html  css  js  c++  java
  • Java之二维数组基本使用

    二维数组

    • 二维数组的应用场景
    • 比如我们开发一个五子棋游戏,棋盘就是需要二维数组来表示。如图:
      在这里插入图片描述

    1. 二维数组的使用

    • 快速入门案例:TwoDimensionalArray01.java
    • 请用二维数组输出如下图形
    0 0 0 0 0 0
    0 0 1 0 0 0
    0 2 0 3 0 0
    0 0 0 0 0 0
    
    //什么是二维数组:
    
    	//1. 从定义形式上看 int[][]
    	//2. 可以这样理解,原来的一维数组的每个元素是一维数组, 就构成二维数组
    	int[][] arr = { {0, 0, 0, 0, 0, 0},
    	        {0, 0, 1, 0, 0, 0},
    	        {0,2,  0, 3, 0, 0},
    	        {0, 0, 0, 0, 0, 0} };
    	//输出二维图形
    	for(int i = 0; i < arr.length; i++) {//遍历二维数组的每个元素
    	    //遍历二维数组的每个元素(数组)
    	    //解读
    	    //1. arr[i] 表示 二维数组的第i+1个元素 比如arr[0]:二维数组的第一个元素
    	    //2. arr[i].length 得到 对应的 每个一维数组的长度
    	    for(int j = 0; j < arr[i].length; j++) {
    	        System.out.print(arr[i][j] + " "); //输出了一维数组
    	    }
    	    System.out.println();//换行
    	}
    

    在这里插入图片描述

    • 举例:访问二位数组中值为 3 的数组坐标
    	//关于二维数组的关键概念
    	//(1)
    	System.out.println("二维数组的元素个数=" + arr.length);
    	//(2) 二维数组的每个元素是一维数组, 所以如果需要得到每个一维数组的值
    	//    还需要再次遍历
    	//(3) 如果我们要访问第 (i+1)个一维数组的第j+1个值 arr[i][j];
    	//    举例 访问 3, =》 它是第3个一维数组的第4个值 arr[3-1][4-1] = arr[2][3]
    	System.out.println("第3个一维数组的第4个值=" + arr[2][3]); //3
    
    • 3的值在二维数组里对应的第3行第4列的值,3对应的坐标本来是 arr[3][4],但数组是从0开始的,所以减1,就是arr[2][3],所以 3 对应的实际坐标就是arr[2][3]
      在这里插入图片描述

    2. 使用方式 1: 动态初始化

    TwoDimensionalArray02.java

    1. 语法: 类型[][] 数组名=new 类型[大小][大小]
    2. 比如: int a[][]=new int[2][3]表示这个二位数组里面有两个一维数组,而每个一维数组里有三个元素
    3. 使用演示
    • 没有赋值,默认值为 0
    	int arr[][] = new int[2][3];
    	//遍历arr数组
    	for(int i = 0; i < arr.length; i++) {
    	    for(int j = 0; j < arr[i].length; j++) {//对每个一维数组遍历
    	        System.out.print(arr[i][j] +" ");
    	    }
    	    System.out.println();//换行
    	}
    

    在这里插入图片描述

    • 把上面的数组进行初始化赋值,arr[1][1] = 8 表示 在第二个一维数组的第二个元素的值为 8
    	int arr[][] = new int[2][3];
    	arr[1][1] = 8;
    	//遍历arr数组
    	for(int i = 0; i < arr.length; i++) {
    	    for(int j = 0; j < arr[i].length; j++) {//对每个一维数组遍历
    	        System.out.print(arr[i][j] +" ");
    	    }
    	    System.out.println();//换行
    	}
    
    1. 二维数组在内存的存在形式
      在这里插入图片描述

    3. 使用方式 2: 动态初始化

    TwoDimensionalArray02.java

    • 先声明:类型 数组名[][];
    • 再定义(开辟空间) 数组名 = new 类型[大小][大小];
    • 赋值(有默认值,比如 int 类型的就是 0)
    • 使用演示
    int arr[][]; //声明二维数组
    arr = new int[2][3]; //再开空间
    

    4. 使用方式 3: 动态初始化-列数不确

    TwoDimensionalArray03
    在这里插入图片描述

    • 代码实现:
    	/*
    	看一个需求:动态创建下面二维数组,并输出
    	
    	i = 0:	1
    	i = 1:	2	2
    	i = 2:	3	3	3
    	
    	一个有三个一维数组, 每个一维数组的元素是不一样的
    	*/
    	
    	//创建 二维数组,一个有3个一维数组,但是每个一维数组还没有开数据空间
    	int[][] arr = new int[3][];
    	
    	for(int i = 0; i < arr.length; i++) {//遍历arr每个一维数组
    	    //给每个一维数组开空间 new
    	    //如果没有给一维数组 new ,那么 arr[i]就是null
    	    arr[i] = new int[i + 1];
    	
    	    //遍历一维数组,并给一维数组的每个元素赋值
    	    for(int j = 0;  j < arr[i].length; j++) {
    	        arr[i][j] = i + 1;//赋值
    	    }
    	
    	}
    	
    	System.out.println("=====arr元素=====");
    	//遍历arr输出
    	for(int i = 0; i < arr.length; i++) {
    	    //输出arr的每个一维数组
    	    for(int j = 0; j < arr[i].length; j++) {
    	        System.out.print(arr[i][j] + " ");
    	    }
    	    System.out.println();//换行
    	}
    

    在这里插入图片描述

    5. 使用方式 4: 静态初始化

    TwoDimensionalArray04.java

    • 定义 类型 数组名[][] = {{值 1,值 2..},{值 1,值 2..},{值 1,值 2..}}
    • 使用即可 [ 固定方式访问 ]
      比如:
    int[][] arr = {{1,1,1}, {8,8,9}, {100}};
    
    • 解读
    1. 定义了一个二维数组 arr
    2. arr 有三个元素(每个元素都是一维数组)
    3. 第一个一维数组有 3 个元素 , 第二个一维数组有 3 个元素, 第三个一维数组有 1 个元素
    • 案例:
      TwoDimensionalArray05.java
      int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和
    	/*
    	思路
    	1. 遍历二维数组,并将各个值累计到 int sum
    	*/
    	int arr[][]= {{4,6},{1,4,5,7},{-2}};
    	int sum = 0;
    	for(int i = 0; i < arr.length; i++) {
    	    //遍历每个一维数组
    	    for(int j = 0; j < arr[i].length; j++) {
    	        sum += arr[i][j];
    	    }
    	}
    	System.out.println("sum=" + sum);
    

    在这里插入图片描述

    6. 二维数组的应用案例

    1. 使用二维数组打印一个 10杨辉三角 YangHui.java
      在这里插入图片描述
    	int[][] yangHui = new int[12][];
    	for(int i = 0; i < yangHui.length; i++) {//遍历yangHui的每个元素
    	
    		//给每个一维数组(行) 开空间
    		yangHui[i] = new int[i+1];
    		//给每个一维数组(行) 赋值
    		for(int j = 0; j < yangHui[i].length; j++){
    			//每一行的第一个元素和最后一个元素都是1
    			if(j == 0 || j == yangHui[i].length - 1) {
    				yangHui[i][j] = 1;
    			} else {//中间的元素
    				yangHui[i][j]  =  yangHui[i-1][j] + yangHui[i-1][j-1];
    			}
    		}
    	}
    	//输出杨辉三角
    	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();//换行.
    	}
    

    在这里插入图片描述

    7. 二维数组使用细节和注意事项

    1. 一维数组的声明方式有:
    int[] x 或者 int x[]
    
    1. 二维数组的声明方式有:
    int[][] y 或者 int[] y[] 或者 int y[][]
    
    1. 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: map[][] 是一个二维数组
    int map [][] = {{1,2},{3,4,5}}
    

    map[0] 是一个含有两个元素的一维数组 ,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组

    8. 二维数组课堂练习

    在这里插入图片描述

  • 相关阅读:
    文本每行都应该换行——vi文件末尾自动换行,不会导致php输出空行
    路由器 DNSMasq 替代 hosts,支持Android、iPhone、PC
    互联网创业的准备——web server:apache、nginx、lighttpd与php module、fastcgi
    dev qa prod
    互联网创业的准备——框架:从MVC到开放API
    Realtek 8192cu win8 驱动
    Win8 RTM 安装到 UEFI PC
    互联网创业的准备——数据库:硬盘iops、mysql
    互联网创业的准备——数据备份
    互联网创业的准备——依赖服务:云主机、域名、代码库
  • 原文地址:https://www.cnblogs.com/xdr630/p/15254627.html
Copyright © 2011-2022 走看看