12、JAVA入门——二维数组

简介: 12、JAVA入门——二维数组

1.gif

1、二维数组


       (1)Java中操作多位数组的语法与一维数组类似。在实际应用中,三维以上的数组很少使用,主要使用二维数组。


       (2)二维数组是一个元素为一维数组的一维数组。


       (3)从语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组。或者说,从表面上是多维数组,实质上都是一维数组。


       (4)定义二维数组的语法格式如下:


                       数据类型[][] 数组名;


                 或者:


                        数据类型 数组名[][];


                          --->数据类型为数组元素的类型。


                          --->“[][]”用于表明定义了一个二维数组,通过多个下标进行数据访问。


                          --->“数组名[下标]”表示二维数组里的一个元素,这个元素还是一个一维数组。


                          --->“数组名[下标][下标]”表示二维数组里的一个元素(一维数组)里的一个元素。


public static void main(String[] args) {
  /*
   * 二维数组:本质上还是一个一维数组,只是这个一维数组里的元素还是一个一维数组
   */
  // 二维数组声明: 数据类型[][] 数组名; 或者 数据类型 数组名[][];
  int[][] nums;
  String[][] strs;
  // 分配空间: 数组名 = new 数据类型[数组长度][数组长度]; 或 数组名 = new 数据类型[数组长度][];
  nums = new int[3][5];// nums是一个长度为3的二维数组,这个二维数组里的元素都是一个长度为5的一维数组
  strs = new String[5][]; // strs是一个长度为5的二维数组,这个二维数组里的元素长度不相同
  //赋值:  数组名[下标][下标] = 数据;
  nums[0][0] = 10;
  nums[0][1] = 20;
  nums[0][2] = 30;
  nums[0][3] = 40;
  nums[0][4] = 50;
  nums[1][0] = 100;
  nums[1][1] = 200;
  nums[1][2] = 300;
  nums[1][3] = 400;
  nums[1][4] = 500;
  nums[2][0] = 10;
  nums[2][1] = 20;
  nums[2][2] = 30;
  nums[2][3] = 40;
  //操作数据:数组名[下标][下标]
  System.out.println(nums[1][2]);
  nums[2][0]+=50;
  System.out.println(nums[2][0]);
  }


2、二维数组的使用


       (1)初始化二维数组


               二维数组初始化的语法格式如下:


              数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};


               或者:


               数据类型[][] 数组名 = {{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};


public static void main(String[] args) {
  //二维数组声明、分配空间合并写: 数据类型[][] 数组名 = new 数据类型[长度][长度]; 或 数据类型[][] 数组名 = new 数据类型[长度][];
  int[][] nums = new int[3][4];
  char[][] chs = new char[5][];
  //二维数组声明、分配空间、赋值合并写:
  //数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2,...,数据n},{数据1,数据2,...,数据m},....,{数据1,数据2,...,数据k}};
  boolean[][] bools = new boolean[][]{{true},{true,false},{false,false,true,false}};
  //二维数组声明、分配空间、赋值合并写的简写方式
  //数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据m},....,{数据1,数据2,...,数据k}};
  float[][] floats ={{12.5F},{99.5F,55.5F},{99.9F},{10.5F,12.5F,85.5F,56.3F,78.5F}};
  }

       (2)二维数组的遍历


               格式如下:                


               for(int i = 0;i<数组名.length;i++){


                       for(int j = 0;j<数组名[i].length;j++){


                               System.out.println(数组名[i][j]);


                       }


               }

public static void main(String[] args) {
  // 要求对3个班各6名学生某门课程的成绩进行各种操作,如何实现?
  // 声明一个长度为3的二维数组,这个二维数组里的元素都是长度为6的一维数组
  int[][] scores = { { 99, 86, 75, 94, 45, 60 },
    { 100, 78, 55, 86, 94, 30 }, { 100, 99, 88, 66, 77, 89 } };
  // 遍历这个二维数组
  for (int i = 0; i < scores.length; i++) {
    // System.out.println(scores[i]);//scores[i]还是一个一维数组,这个一维数组里存储的是各个班级学生的成绩,输出scores[i]输出的是这个一维数组的地址值,我们需要将这个一维数组里的元素取出来
    // 声明一遍变量来累加各个班的成绩之和:
    int sum = 0;
    System.out.println("第" + (i + 1) + "个班学生成绩分别是:");
    for (int j = 0; j < scores[i].length; j++) {
    System.out.print("第" + (j + 1) + "名学生成绩:");
    System.out.println(scores[i][j]);
    sum += scores[i][j];
    }
    System.out.println("第" + (i + 1) + "个班学生成绩之和是:" + sum);
    int avg = sum / scores[i].length;
    System.out.println("第" + (i + 1) + "个班学生平均成绩是:" + avg);
  }
  }


相关文章
|
1天前
|
开发框架 IDE Java
java制作游戏,如何使用libgdx,入门级别教学
本文是一篇入门级教程,介绍了如何使用libgdx游戏开发框架创建一个简单的游戏项目,包括访问libgdx官网、设置项目、下载项目生成工具,并在IDE中运行生成的项目。
7 1
java制作游戏,如何使用libgdx,入门级别教学
|
17天前
|
Java 程序员 UED
Java中的异常处理:从入门到精通
【9月更文挑战第23天】在Java编程的世界中,异常是程序执行过程中不可避免的事件,它们可能会中断正常的流程并导致程序崩溃。本文将通过浅显易懂的方式,引导你理解Java异常处理的基本概念和高级技巧,帮助你编写更健壮、更可靠的代码。我们将一起探索如何捕获和处理异常,以及如何使用自定义异常来增强程序的逻辑和用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
32 4
|
2月前
|
设计模式 前端开发 Java
【前端学java】SpringBootWeb极速入门-分层解耦(03)
【8月更文挑战第13天】SpringBootWeb极速入门-分层解耦(03)
18 2
【前端学java】SpringBootWeb极速入门-分层解耦(03)
|
2月前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
56 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
2月前
|
JSON 前端开发 Java
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)
17 1
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
|
2月前
|
算法 Java 开发者
Java 编程入门:从零到一的旅程
本文将带领读者开启Java编程之旅,从最基础的语法入手,逐步深入到面向对象的核心概念。通过实例代码演示,我们将一起探索如何定义类和对象、实现继承与多态,并解决常见的编程挑战。无论你是编程新手还是希望巩固基础的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
2月前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
2月前
|
Java 程序员 UED
Java中的异常处理:从入门到精通
【8月更文挑战第28天】在Java编程的世界里,异常处理是一块基石,它确保了程序的健壮性和可靠性。本文将通过深入浅出的方式,带你了解Java异常处理的基本概念、分类、以及如何有效地捕获和处理异常。我们将一起探索try-catch-finally结构的奥秘,并学习如何使用throws关键字声明方法可能会抛出的异常。此外,我们还会讨论自定义异常类的创建和使用,以及最佳实践。无论你是Java新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识,帮助你编写出更加稳定和可靠的代码。
|
2月前
|
编解码 网络协议 Oracle
java网络编程入门以及项目实战
这篇文章是Java网络编程的入门教程,涵盖了网络编程的基础知识、IP地址、端口、通讯协议(TCP和UDP)的概念与区别,并提供了基于TCP和UDP的网络编程实例,包括远程聊天和文件传输程序的代码实现。
java网络编程入门以及项目实战
|
29天前
|
Java 程序员
Java中的异常处理:从入门到精通
在Java编程的世界中,异常处理是保持程序稳定性和可靠性的关键。本文将通过一个独特的视角—把异常处理比作一场“捉迷藏”游戏—来探讨如何在Java中有效管理异常。我们将一起学习如何识别、捕捉以及处理可能出现的异常,确保你的程序即使在面对不可预见的错误时也能优雅地运行。准备好了吗?让我们开始这场寻找并解决Java异常的冒险吧!