二维数组(Dyadic Array)

本文详细介绍了二维数组的概念,通过实例展示了二维数组的声明、初始化及使用,包括动态初始化和静态初始化两种方式。文章还探讨了二维数组的遍历方法,并列举了多个练习题,如数组遍历求和、查找操作、获取最大值和最小值、数组长度计算及数组反转等应用,旨在帮助读者深入掌握二维数组的运用。
摘要由CSDN通过智能技术生成

二维数组(Dyadic Array)

一维数组 : 数组中直接存放数据

二维数组 : 数组中存放数组

二维数组可以看成以数组为元素的数组。就是一个特殊的一维数组,其每一个元素都是一个一维数组

String[][] str = new String[3][4];//String类型二维数组举例

其实多维数组不仅仅只有二维数组,还有三维数组,四维数组…, 但是三维以上很少见到,所以大家重点了解二维数组即可.

1.举例

int [][] a = {
   {
   1,2},{
   3,4,0,9},{
   5,6,7}};

在这里插入图片描述

2.二维数组的声明

		数据类型  变量名;     -->变量声明
        数据类型[] 数组名;    -->一维数组声明
        数据类型[][] 数组名;  -->二维数组声明

3.二维数组的初始化

3.1.动态初始化

数组定义与为数组元素分配空间和赋值的操作分开进行

数据类型[][] 数组名 = new 数据类型[一维][二维];

注意:这种初始化方式,每一个内层的二位数组长度相同

int[][] a=new int[3][2];
a[0][0] = 1;
a[0][1] = 2;

在这里插入图片描述

动态初始化  : 创建二维数组的同时赋值(内部一维数组创建+每一个一维数组中的数据)
    创建外层二维数组同时创建内层每一个一维刷组+没有赋值数据,存在默认值
    	数据类型[][] 数组名 = new 数据类型[外层二维数组长度][内层一维数组长度];
	创建外层二维数组,内层每一个一维数组在后续确定时单独创建+赋值数据
        数据类型[][] 数组名 = new 数据类型[外层二维数组长度][];
int[][] a=new int[3][];
arr[0]=new int[2];
arr[1]=new int[]{
   3,4,5,6};
arr[2]=new int[]{
   7,8,9};
arr[0][0] = 1;
arr[0][1] = 2;

在这里插入图片描述

3.2.静态初始化

在定义数组的同时就为数组元素分配空间并赋值

数据类型[][] 数组名 = new 数据类型[][]{
  {...},{...},{...}};
数据类型[][] 数组名 = {
  {...},{...},{...}}; --简化写法
int[][] arr1=new int[][]{
   {
   5,4,8},{
   3,8},{
   1}};
char[][] arr2={
   {
   'a'},{
   'b','c'}};

4.二维数组的使用

  • 根据索引进行使用
  • 数组数组名 [外层二维索引] [内层一维索引]

4.1.数组的遍历

双重循环实现多维数组的遍历

/*
    二维数组的遍历方式 :
        1.for
        2.foreach
        以上两种循环任意嵌套
 */
public class ArrayTest {
   
    public static void main(String[] args) {
   
        int[][] arr = {
   {
   1,2,3},{
   4,5},{
   6}};
		//	for循环嵌套加强for
        //for-->foreach
        for(int i=0;i<arr.length;i++){
   //
            for(int j:arr[i]){
   
                System.out.println(j);
            }
        }
		//	两个加强for嵌套
        //foreach-->foreach
        for(int[] a:arr){
   
            for(int i:a){
   
                System.out.println(i);
            }
        }
    }
}
public class AraayEachTest {
   
    public static void main(String[] args) {
   
        int[][] arr = {
   {
   1,2,3},{
   4,5},{
   6,7}};
        //for嵌套for
       for (int i = 0; i < arr.length; i++) {
   
           for (int j = 0; j < arr[i].length; j++) {
   
                System.out.println(arr[i][j]);
            }
       }
        //System.out.println(Arrays.deepToString(arr));//返回指定数组内容的字符串表示形式。
        //for 嵌套each
       for (int i = 0; i < arr.length; i++) {
   
            for (int a:arr[i]
                ) {
   
                System.out.println(a);
            }
        }
//        //each 嵌套each
//        for (int[] a:arr
//             ) {
   
//            for (int b:a
//                 ) {
   
//                System.out.println(b);
//            }
//        }
//        //each 嵌套for
//        for (int[] i:arr
//             ) {
   
//            for (int j = 0; j < i.length; j++) {
   
//                System.out.println(i[j]);
//            }
//        }
    }
}

Arrays中提供操作多维数组的方法:

package com.arraytest;

import java.util.Arrays;//它提供的所有方法都是静态的。

public class AraayEachTest {
   
    public static void main(String[] args) {
   
        int[][] arr = {
   {
   1,2,3},{
   4,5},{
   6,7}};
        int[][] arr2 = {
   {
   1,2,3},{
   4,5},{
   6,7}};
        int[][] arr1 = {
   {
   1,2,3},{
   4,5},{
   6,
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值