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

(已发25年8月华为云、51CTO)数组编程:编程的基础数据结构!

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

在编程的世界里,数组就像是一个“盒子”,它可以把多个相同类型的元素集中存储。你可以通过索引访问这些元素,就像在盒子里拿取某个特定位置的物品一样。Java 中的数组就是这样一个基础的数据结构,它帮助我们高效地存储和处理大量的数据。

今天,我们将深入探讨 Java 数组编程的核心内容,包括一维数组和多维数组的使用、数组遍历方法以及数组的常用算法(排序和查找)。这将为你提供编写高效代码的基础,帮助你在解决实际问题时游刃有余。

1. 一维数组的声明、创建和初始化

1.1 一维数组的声明

在 Java 中,数组是一种对象类型。声明一个数组时,实际上是声明了一个数组对象的引用。数组的元素可以是基本数据类型(如 intchar 等)或者引用类型(如 String、自定义类对象等)。我们来看看如何声明一个一维数组:

// 声明一个整型数组
int[] arr;// 声明一个字符型数组
char[] charArr;// 声明一个字符串型数组
String[] strArr;
1.2 一维数组的创建

声明了数组之后,我们还需要创建数组并分配内存空间。在 Java 中,数组的创建通过 new 关键字完成:

// 创建一个长度为 5 的整型数组
arr = new int[5];// 创建一个长度为 3 的字符数组
charArr = new char[3];// 创建一个长度为 2 的字符串数组
strArr = new String[2];
1.3 一维数组的初始化

数组的初始化有两种方式:静态初始化和动态初始化。

  • 静态初始化:在声明数组的同时,直接为数组赋值。
// 静态初始化数组
int[] arr = {1, 2, 3, 4, 5};
char[] charArr = {'a', 'b', 'c'};
String[] strArr = {"Hello", "World"};
  • 动态初始化:先声明并创建数组,再逐个赋值。
// 动态初始化数组
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
1.4 一维数组的访问

一维数组通过索引来访问元素。数组的索引从 0 开始,直到 length - 1。例如:

int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[0]);  // 输出 1
System.out.println(arr[4]);  // 输出 5

2. 多维数组的使用

多维数组可以看作是数组的数组。二维数组最常见,用来存储矩阵、表格等数据结构。在 Java 中,二维数组是通过数组的数组来实现的。

2.1 二维数组的声明与创建
  • 声明和创建二维数组
// 声明并创建一个 2x3 的二维数组
int[][] matrix = new int[2][3];
  • 静态初始化二维数组
// 静态初始化二维数组
int[][] matrix = {{1, 2, 3},{4, 5, 6}
};
2.2 访问二维数组元素

通过两个索引来访问二维数组中的元素,第一个索引表示行,第二个索引表示列:

int[][] matrix = {{1, 2, 3},{4, 5, 6}
};System.out.println(matrix[0][0]);  // 输出 1
System.out.println(matrix[1][2]);  // 输出 6
2.3 多维数组的遍历

你可以通过嵌套循环来遍历二维数组。以下是遍历二维数组的例子:

int[][] matrix = {{1, 2, 3},{4, 5, 6}
};for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length; j++) {System.out.print(matrix[i][j] + " ");}System.out.println();  // 换行
}

输出:

1 2 3 
4 5 6 

3. 数组的遍历方法

数组遍历是操作数组时最常见的操作之一。在 Java 中,我们可以通过不同的方式遍历数组:

3.1 使用 for 循环遍历数组

这是最常见的遍历方式,使用普通的 for 循环。

int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);
}
3.2 使用增强型 for 循环(foreach)

增强型 for 循环也叫 foreach 循环,是遍历数组的简洁方式。

int[] arr = {1, 2, 3, 4, 5};
for (int num : arr) {System.out.println(num);
}
3.3 使用 Arrays 类提供的方法

Java 的 Arrays 类提供了许多方便的数组操作方法,如 toString() 用于输出数组的内容。

import java.util.Arrays;int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr));  // 输出 [1, 2, 3, 4, 5]

4. 数组常用算法:排序与查找

数组作为一个基础数据结构,排序和查找是最常见的操作之一。Java 提供了很多内置的方法来帮助我们高效地实现这些操作。

4.1 数组排序

Java 中的 Arrays.sort() 方法可以对数组进行排序,默认是升序排序。下面是一个排序示例:

import java.util.Arrays;int[] arr = {5, 3, 8, 1, 2};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));  // 输出 [1, 2, 3, 5, 8]
4.2 数组查找

数组查找常用的算法是线性查找和二分查找。

  • 线性查找:从数组的第一个元素开始,逐个比较,直到找到目标元素。
int[] arr = {1, 2, 3, 4, 5};
int target = 3;
boolean found = false;
for (int i = 0; i < arr.length; i++) {if (arr[i] == target) {found = true;break;}
}
System.out.println(found ? "找到目标" : "没有找到目标");
  • 二分查找:二分查找要求数组必须是已排序的,它通过每次将搜索范围缩小一半来提高查找效率。
import java.util.Arrays;int[] arr = {1, 2, 3, 4, 5};
int target = 4;
int index = Arrays.binarySearch(arr, target);
System.out.println(index >= 0 ? "找到目标" : "没有找到目标");  // 输出 找到目标

总结:从基础到进阶,数组的魔力

数组是编程中最基础也是最重要的数据结构之一。它提供了一个简单且高效的方式来存储和访问数据。无论你是在处理大量的数据,还是在实现复杂的算法,数组都将是你最常用的工具。

通过掌握一维数组和多维数组的使用,数组遍历方法以及常见的数组算法,你将能够在实际编程中更加得心应手。记住,数组不仅仅是存储数据的容器,它还是理解更复杂数据结构和算法的基石。

希望你能将今天学到的数组知识应用到实际编程中,不断提升自己的编码水平。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

http://www.dtcms.com/a/581350.html

相关文章:

  • 北京网站制作设计哪个公司好网站开发人员结构配比
  • 面对未来:企业决策与适应力
  • bat 批处理实现 FFmpeg 命令压缩 MP4
  • openEuler 云原生实战:部署高性能 Redis 集群与压测分析
  • 机器学习-逻辑回归与二分类
  • 老玩家流失?基于数据驱动的游戏用户流失分析与干预策略
  • 做网站的公司名字北京注册网站
  • 如何用c 做网站hao123从网上开始
  • ThinkPHP 8 多应用模式下如何隐藏路由中的应用名
  • [SEO]网站不收录的原因及解决方法有哪些
  • conda以及Jupyter notebook的使用
  • 告别手动录入:文档抽取技术如何让RPA处理非结构化数据?
  • MIT-数字棋盘和数字三角形
  • 自助网站建设费用怎样做软件开发
  • Python面向对象和方法
  • AJAX 实例详解
  • 检测图片URL是否失效
  • 网站设计专业实验室建设与wordpress集成软件
  • 15、RabbitMQ
  • ftp怎么连接网站空间高端网站制造
  • 命名空间的内联与嵌套
  • UML建模工具Enterprise Architect如何建立和执行架构标准和规范
  • 项目一:意图识别技术与实战(案例:智能政务热线意图分类与工单自动分发系统)
  • Spec-Kit 实战指南:从零到一构建“照片拖拽相册”Web App
  • 一个网站怎么做多条线路郑州市城乡建设局证书查询
  • 河南平台网站建设价位织梦商业网站内容管理系统
  • 圆桌论坛精华实录 | AI是重构运维逻辑的颠覆性革命?博睿数据与行业大咖亲授“AI+可观测性”的破局之道
  • 高并发场景下的缓存利器
  • XML 元素:解析与运用
  • LegionSpace黑客松指南(二):MCP服务开发与集成详解