当前位置: 首页 > news >正文

Java基础 3.28

1.二维数组

  • 从形式上定义看 int[][]
  • 原来的一维数组的每个元素是一维数组,就构成了二维数组
int arr[][] = { {0, 0, 0 ,0},{0, 1, 1, 1},{0, 0, 0, 0},{0, 1, 1, 1} };

关于二维数组的关键概念

  • 二维数组的元素个数为arr.length
  • 二维数组的每个元素是一堆数组,所有如果需要得到每个一维数组的值还需要再次遍历
  • 如果我们要访问第(i+1)个一维数组的第(j+1)个值 arr[i][j]
public class TwoDimens {public static void main(String[] args) {int arr[][] = { {0, 0, 0 ,0},{0, 1, 1, 1},{0, 0, 0, 0},{0, 1, 1, 1} };//输出二维图形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:动态初始化

语法:类型[][] 数组名 = new 类型[大小][大小] int a[][] = new int[2][3]

public class TwoDimens02 {public static void main(String[] args) {int arr[][] = new int[2][3];arr[1][2] = 8;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();	}}
}

使用方式2:动态初始化

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

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

public class TwoDimens02 {public static void main(String[] args) {int arr[][] = new int[3][];//创建二维数组,但是知识确定一维数组的个数for (int i = 0; i < arr.length; i++) {//遍历arr每个一维数组//给每个一维数组开空间 new//如果没有给一维数组new,那么arr[i]就是nullarr[i] = new int[i + 1];//遍历一维数组,并给一维数组的每个元素赋值for (int j = 0; j < arr[i].length; j++) {arr[i][j] = i + 1;}}//输出以上形成的二维数组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();//换行}}
}

使用方式4:静态初始化

  • 定义 类型 数组名[][] = {{}, {}, {}} int arr[][] = {{1, 2, 3}, {2, 3, 4}, {6}};
  • 直接在大括号内赋值即可,固定访问

注意:一旦定义了某个二维数组,二维数组中便不可再出现基本数据类型或其他类型,只能是一维数组

错误示范
int arr[][] = {{1, 2, 3}, {2, 3, 5}, 10};

直接报错

二维数组练习

public class TwoDimens03 {public static void main(String[] args) {//遍历该数组并得到该数组的和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.print(arr[i][j] + " ");}System.out.println();}System.out.print("sum = " + sum);}
}

用二维数组创建杨辉三角

ublic class TwoDimens04 {public static void main(String[] args) {//杨辉三角的创建/*1 2 11 3 3  11 4 6  4  11 5 10 10 5 1规律1.第一行有1个元素,第n行有n个元素2.每一行的第一个元素和最后一个元素都是13.从第三行开始,对于非第一个元素和最后一个的元素的值 arr[i][j]arr[i][j] = arr[i-1][j] + arr[i-1][j-1]*/int arr[][] = new int[10][];for (int i = 0; i < arr.length; i++) {//遍历杨辉的每个元素//给每个一维数组开空间arr[i] = new int[i + 1];//给每个一维数组赋值for (int j = 0; j < arr[i].length; j++) {//每行的第一个元素和最后一个元素都是1if (j == 0 || j == arr[i].length - 1) {arr[i][j] = 1;} else {//中间的元素arr[i][j] = arr[i-1][j] + arr[i-1][j-1];}}}//输出杨辉三角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();}}
}

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

  • 一维数组的声明方式有:int[] x 或 int x[]
  • 二维数组的声明方式有:int[][] y 或 int[] y[] 或 int y[][]
  • 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同 例如:int map [][] = {{1, 2}, {3, 4, 5}} 我们称为列数不等的二维数组

http://www.mrgr.cn/news/96305.html

相关文章:

  • C++指针(五)完结篇
  • 刘火良FreeRTOS内核实现与应用学习之6——多优先级
  • 从泛读到精读:合合信息文档解析如何让大模型更懂复杂文档
  • 数据结构与算法:1,选择排序
  • 菜鸡前端计算机强基计划之CS50 第七课 python 入门—— Python 中文件操作专题学习
  • 基于SpringBoot的“交通旅游订票系统”的设计与实现(源码+数据库+文档+PPT)
  • linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像
  • 5.0 WPF的基础介绍1-Grid,Stack,button
  • flink 分组窗口聚合 与 窗口表值函数聚合 的区别
  • Codeforces Round 1013 (Div. 3)-F
  • 06-SpringBoot3入门-常见注解(简介)
  • 典范硬币系统(Canonical Coin System)→ 贪心算法
  • 【商城实战(93)】商城高并发实战:分布式锁与事务处理深度剖析
  • 如何一键安装所有Python项目的依赖!
  • GenBI 中如何引入 LLM 做意图路由,区分查数据还是闲聊
  • 【C#】Task 线程停止
  • 构建高可用性西门子Camstar服务守护者:异常监控与自愈实践
  • Audacity Nyquist插件开发:定义输入框和获取用户输入
  • #VCS# 关于 +incdir+xxx 编译选项的注意点
  • 【Zabbix技术系列文章】第①篇——基础入门