数组的进阶

简介: 数组的进阶

引入

上一篇博客相信已经带领各位对数组及其有关数据结构有了初步了解,于是,在此,我将数组有关知识进行升级,接下来你们将会看到多维数组以及数组排序的有关知识。

1.多维数组及其操作

1.1二维数组的概念

一天,刘某和袁某来剧院看青海摇,望着剧院的一大片座位,袁某不知道坐哪,而刘某把票拿了出来,上面显示三行七列,于是他很容易地找到了座位,那么显然,座位的分布是二维的,要通过行和列我们才能知道具体位置,二维数组也是如此,我们仍可以用行和列来表示相同类型变量的有序集合

二维数组存储形式如下(int[3][4] arr:3为行,4为列)

0 1 2 3
0    (0,0) (0,1) (0,2) (0,3)
1          (1,0) (1,1) (1,2) (1,3)
2      (2,0) (2,1) (2,2) (2,3)

我们之前讲过,数组的下标从0开始,因此,在二维数组中,行和列各自的下标也是从0开始,到对应长度-1。而行与列对应的坐标存储了相同类型的变量。由于数组是顺序存储的,在二维数组中也一样(因此:上图中坐标(0,3)的元素和(1,0)的元素在内存中也是连续的)。

1.2二维数组的操作

1.数组元素的初始化

类似于一维数组,共有三种形式,示例代码如下:

//数据类型[][] 数组名称= new 数据类型[第一维的长度][第二维的长度]
int[][] array = new int[2][3];
//数据类型[][] 数组名称
int[][] array;
//数组名称= new 数据类型[第一维的长度][第二维的长度]
array = new int[2][3];
 
->int[2][3] array = {{1,2,3},{4,5,6}};

特殊地,我们规定二维数组初始化时也可以只给出第一维长度,

如:int[ ][ ] n = new int[2][ ];但是不能只给出第二维长度

然后分别初始化后续的元素,n[0] = new n[2]; n[1] = new n[6];

这里首先是把n看成了一个一维数组,然后对它的两个元素进行动态初始化,使它成为二维数组。

2.读取元素

由于二维数组亦在内存中顺序存储,给出下标就会得到对应的数组元素。仍需注意,输入的下标不能超出数组长度。

int[][] array = {{1,2,3},{4,5,6}};
//初始化数组元素
System.out.println(array[1][1]);
//第二行第二列的元素->5

3.更新元素

与一维数组相同,二维数组更新的操作也是直接赋值

int[][] array = {{1,2,3},{4,5,6}};
//给下标为(1,1)的元素重新赋值
array[1][1] = 5;
//输出更新后的元素
System.out.println(array[1][1]);

下面我们来看一下二维数组的自定义初始化与输出:

import java.util.Scanner;
 
public class _2D_Array {
    public static void main(String[] args){
        //创建定义二维数组
        int[][] array =new int[4][5];
        //创建Scanner
        Scanner input = new Scanner(System.in);
        //给二维数组中的一维数组赋值
        for(int i = 0; i < array.length; i++){
            for(int j = 0; j < 5; j++){
                array[i][j] = input.nextInt();
            }
        }
        //查看二维数组中的一维元素
       for(int a = 0; a < array.length; a++){
           for(int b = 0; b < 5; b++){
               System.out.println(array[a][b]);
           }
       }
    }
}
相关文章
|
关系型数据库 MySQL 弹性计算
部署LAMP环境(Alibaba Cloud Linux 3)
本教程提供在阿里云云服务器ECS上基于Alibaba Cloud Linux 3操作系统搭建LAMP环境的指引。LAMP是应用广泛的网站服务系统,由四种免费的开源软件Linux、Apache、MySQL和PHP组成。搭建好LAMP环境后,您可以在该ECS实例上搭建网站、访问网站、搭建开发环境等。
113205 69
部署LAMP环境(Alibaba Cloud Linux 3)
|
6月前
|
Java API Spring
Spring Boot 中的 AOP 处理
对 Spring Boot 中的切面 AOP 做了详细的讲解,主要介绍了 Spring Boot 中 AOP 的引入,常用注解的使用,参数的使用,以及常用 api 的介绍。AOP 在实际项目中很有用,对切面方法执行前后都可以根据具体的业务,做相应的预处理或者增强处理,同时也可以用作异常捕获处理,可以根据具体业务场景,合理去使用 AOP。
|
6月前
|
监控 安全 网络安全
PHP代码审计之简单思路方法
PHP代码审计之简单思路方法
171 1
|
7月前
|
缓存 图形学 UED
U3D开发技术深度解析:异步场景加载与资源管理优化策略
【7月更文第11天】在Unity3D(简称U3D)游戏开发中,优化场景加载与资源管理是提升用户体验的关键一环。通过实现高效的异步场景加载和智能的资源管理策略,我们能显著缩短玩家的等待时间,提升游戏流畅度。本文将详细介绍这两种技术的应用,并提供实用的代码示例。
583 0
|
9月前
|
JavaScript 前端开发
植物大战僵尸Javascript版web游戏源码
植物大战僵尸Javascript版web游戏源码,非常强大,1比1还原电脑版植物大战僵尸游戏,带背景音乐,玩法和原版一模一样。
343 2
|
Java 数据库连接 测试技术
Mybatis-PLUS详解
Mybatis-PLUS详解
272 0
|
9月前
|
监控 网络安全 数据库
IT知识百科:什么是802.1x认证逃生?
【2月更文挑战第20天】
678 0
IT知识百科:什么是802.1x认证逃生?
|
9月前
|
算法 数据可视化 大数据
大数据分析的技术和方法——探究现代数据处理的未来方向
在当今信息化时代,海量数据已经成为企业和组织的重要资源。大数据分析技术的出现为数据处理提供了更高效、更准确的解决方案。本文将深入探讨大数据分析技术和方法,分析其优势和应用场景,以及未来发展方向。
277 10
|
编解码 JSON 前端开发
|
机器学习/深度学习 算法 PyTorch
Python实现替换照片人物背景,精细到头发丝(附上代码) | 机器学习(1)
Python实现替换照片人物背景,精细到头发丝(附上代码) | 机器学习
Python实现替换照片人物背景,精细到头发丝(附上代码) | 机器学习(1)

热门文章

最新文章