Java 每日一刊(第9期):数组

news2024/12/23 13:31:06

文章目录

    • 前言
    • 什么是数组
    • 初始化数组
    • 如何访问和操作数组
    • 遍历数组
    • 多维数组
    • 数组的常见操作
      • 复制数组
      • 排序数组
      • 搜索数组
    • 数组的长度和异常处理
    • `Arrays` 工具类
    • 本期小知识

“简单是效率的灵魂。”

前言

这里是分享 Java 相关内容的专刊,每日一更。

本期将为大家带来以下内容:

  1. 什么是数组
  2. 初始化数组
  3. 如何访问和操作数组
  4. 遍历数组
  5. 多维数组
  6. 数组的常见操作
  7. 数组的长度和异常处理
  8. Arrays 工具类

什么是数组

数组,简单来说,就是一个能存放多个 相同类型数据 的“容器”。不论是数字、字符、还是对象,只要是同一类型的数据,数组都能把它们整齐地存放在一起。每个数据都有一个位置编号(索引),这样我们就可以快速找到它们。例如:

int[] numbers = new int[5];  // 创建一个可以存放5个整数的数组

这段代码就像是在告诉 Java:“请给我一个带有 5 个格子的柜子,这里面我要放整数。”

初始化数组

在 Java 中,数组的初始化有两种主要方式:

静态初始化:你直接把数据塞进去。

int[] numbers = {1, 2, 3, 4, 5};  // 创建并初始化数组

动态初始化:你先把柜子建好,再慢慢往里放东西。

int[] numbers = new int[5];  // 创建一个空的数组
numbers[0] = 1;  // 把第一个格子填上数字1

如何访问和操作数组

就像在柜子里找东西一样,你可以通过索引来获取或修改数组中的某个元素。索引从 0 开始,这点很重要!

获取数组元素:

int firstNumber = numbers[0];  // 获取第一个格子的内容

修改数组元素:

numbers[2] = 10;  // 把第三个格子的内容改成10

遍历数组

想一次性看看所有的东西?可以用循环来“逛”数组。

使用 for 循环:

for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);  // 打印每个格子的内容
}

使用 foreach 循环:

for (int number : numbers) {
    System.out.println(number);  // 依次打印每个格子的内容
}

多维数组

有时候,一个柜子不够用,我们需要多个柜子来存储更复杂的数据。这时候,多维数组就派上用场了。最常见的是二维数组,它就像是一个装满格子的表格。

创建二维数组:

int[][] matrix = new int[3][3];  // 创建一个3x3的矩阵

访问二维数组:

matrix[0][1] = 5;  // 把第一行第二列的值设为5

想象一下你有一个 3x3 的表格,每个格子都可以放一个数字。这个“表格”就是二维数组。

数组的常见操作

数组不仅能存储数据,还能进行一些常见操作。

复制数组

你可以使用 System.arraycopy()Arrays.copyOf() 来复制数组。

int[] newArray = Arrays.copyOf(numbers, numbers.length);

排序数组

想把数组的内容按顺序排好?Arrays.sort() 可以帮你。

Arrays.sort(numbers);  // 把数组中的数字从小到大排列

搜索数组

找某个数字的位置?Arrays.binarySearch() 是个好工具,但前提是数组得是排好序的。

int index = Arrays.binarySearch(numbers, 3);  // 查找数字3的索引

数组的长度和异常处理

每个数组都有一个固定的长度,也就是它有多少个格子,这个长度是通过 length 属性获取的。

int len = numbers.length;  // 获取数组的长度

但你得小心访问数组时的索引,超出了数组的大小,就会抛出 ArrayIndexOutOfBoundsException 错误。这就像你试图打开一个不存在的柜子,会被告知“没有这个柜子!”

Arrays 工具类

Java 提供了一个非常实用的工具类 java.util.Arrays,它可以帮我们轻松地处理数组。

Arrays.toString():将数组转换成一个字符串,方便我们查看。

System.out.println(Arrays.toString(numbers));  // 输出:[1, 2, 3, 4, 5]

Arrays.equals():用来比较两个数组是否相等。

Arrays.fill():可以将数组中的所有元素设置成相同的值。

Arrays.fill(numbers, 0);  // 把所有格子的值都设为0

本期小知识

在 Java 中,数组是对象,不论它存储的是基本数据类型还是引用类型。因此,数组具有所有对象的特性,包括默认继承自 Object 类的方法。

这意味着数组可以调用 Object 类的方法,如 toString()hashCode(),但由于 toString() 没有被数组重写,它返回的结果是数组对象的内存地址,这就是为什么通常使用 Arrays.toString() 来打印数组内容的原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算和虚拟化技术 背诵

https://zhuanlan.zhihu.com/p/612215164 https://zhuanlan.zhihu.com/p/612215164 云计算是指把计算资源、存储资源、网络资源、应用软件等集合起来&#xff0c;采用虚拟化技术 &#xff0c;将这些资源池化&#xff0c;组成资源共享池&#xff0c;共享池即是“云”。 云计算…

从零开始学习Linux(12)---进程间通信(信号量与信号)

1.信号量 信号量是计算机科学中用于同步和互斥的一种抽象数据类型。在并发编程中&#xff0c;当多个进程或线程需要访问共享资源时&#xff0c;信号量用来确保资源在同一时刻只被一个进程或线程访问&#xff0c;从而避免竞争条件。 信号量通常具有以下特性&#xff1a; 整…

Fisco Bcos 2.11.0配置console控制台2.10.0及部署调用智能合约

Fisco Bcos 2.11.0配置console控制台2.10.0及部署调用智能合约 文章目录 Fisco Bcos 2.11.0配置console控制台2.10.0及部署调用智能合约前言版本适配一、启动FIsco Bcos区块链网络二、获取控制台文件三、配置控制台3.1 执行download_console.sh脚本3.2 拷贝控制台配置文件3.3 修…

读构建可扩展分布式系统:方法与实践06异步消息传递

1. 异步消息传递 1.1. 通信是分布式系统的基础&#xff0c;也是架构师需要纳入其系统设计的主要问题 1.2. 客户端发送请求并等待服务器响应 1.2.1. 这就是大多数分布式通信的设计方式&#xff0c;因为客户端需要得到即时响应后才能继续 1.2.2. 并非所有系统都有这个要求 1…

数据时代,职场离不开的远程控制工具

中秋了大概率是在正常放假了吧&#xff0c;如果突发遇到需要你处理的文件怎么办呢&#xff1f;其实有远程操作工具你就不用到办公室了。向日葵远程控制软件这些工具就可以帮我们远程实现控制电脑操作。如果你也有这方面需求就继续看吧&#xff0c;这次我将介绍几款我用过效果比…

Redis常见应用场景

目录 一、实现博客点赞功能 二、实现博客点赞用户列表功能 三、好友关注和取关以及求共同关注 四、实现关注推送 1、拉模式 2、推模式 3、推拉结合 四、三种模式对比 这里简单记录一下&#xff0c;没有实现方法&#xff0c;只是帮助记忆 一、实现博客点赞功能 可以通…

[NSSRound#4 SWPU]hide_and_seek-用gdb调试

看反汇编 ; __unwind { .text:0000000000001514 F3 0F 1E FA endbr64 .text:0000000000001518 55 push rbp .text:0000000000001519 48 89 E5 mov rbp, rsp .text:000000000000151C 53 …

python tkinter

基本使用 基于tkinter创建 GUI基本四步&#xff1a;窗口->组件->布局->事件 1.创建窗口对象 from tkinter import *root Tk() # 创建窗口root.mainloop() # 进入事件循环 2.创建组件 按钮文本等组件 btn Button(root) # 创建Button组件&#xff0c;使组件在…

re题(25)BUUFCTF-[GUET-CTF2019]re

BUUCTF在线评测 (buuoj.cn) 查下壳&#xff0c;是upx壳 脱一下 查看字符串&#xff0c;定位到主函数&#xff0c;也可以用ctrlE的方式找到主函数 明显&#xff0c;sub_4009AE是对flag加密的关键函数 进入sub_4009AE看一下 看到这儿有一堆大数和方程&#xff0c;我们知道要用z…

Transformer模型详细步骤

Transformer模型是nlp任务中不能绕开的学习任务&#xff0c;我将从数据开始&#xff0c;每一步骤都列举出来&#xff0c;然后对应重点的代码进行讲解 ------------------------------------------------------------------------------------------------------------- Trans…

Skytower

一、安装配置靶机 下载地址: SkyTower: 1 ~ VulnHub 下载之后解压发现是VirtualBox格式的 我们下载一个VirtualBox&#xff0c;这是官网 Downloads – Oracle VirtualBox 安装到默认路径就 打开后点击注册 选择解压后的vbox文件 然后点击左上角管理 点击导出虚拟电脑&…

PCIe进阶之TL:Request Handling Rules

1 Handling of Received TLPs 本节介绍接收到的 TLP 在数据链路层经过完整性验证之后,这些 TLP 在事务处理层时的处理方式。这些规则如下图所示: 接收侧会忽略保留字段。如果 Fmt 字段显示存在至少一个 TLP Prefix : (1)通过检查后续 DWORD 的第一个字节中的 Fmt 字段,…

两个人群填充参考(CHN100K和NARD)

分别是中国人群和东北亚人群的填充参考&#xff0c;测试了下&#xff0c;中国人群的参考注册还是相对友好的&#xff0c;没有像有些网站一样严格限制。东北亚的没有测试&#xff0c;两个数据库的特点都是包含了少数民族&#xff0c;研究朝鲜或蒙古族或其他民族的同学&#xff0…

Java 枚举 新特性

Java 枚举&#xff08;enum&#xff09;自JDK 1.5引入以来&#xff0c;随着版本的升级不断增强。本文将回顾枚举的演进&#xff0c;尤其是结合switch语句的应用&#xff0c;展示枚举如何在现代Java中变得更加灵活。 1. JDK 1.5&#xff1a;Java 枚举的诞生 在JDK 1.5之前&…

Dbt基本概念与快速入门

在过去的几年里&#xff0c;数据科学界已经慢慢地接受了以数据为中心的范式。我们不仅关注日益复杂的机器学习模型&#xff0c;还要更多地关注数据质量。这使得数据工程、分析工程领域技术和工具成为热点。dbt(数据构建工具)是一个显著改善数据工程师生活的工具。它的目的是向数…

【漏洞复现】金某云星空ERP GetImportOutData .net反序列化漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

Chinese Spelling Correction as Rephrasing Language Model(AAAI2024)

Chinese Spelling Correction as Rephrasing Language Model(AAAI2024) 一&#xff0e;概述 目前最先进的方法将CSC(Chinese Spelling Correction)作为序列标注任务&#xff0c;并在句子对上微调基于bert的方法。然而&#xff0c;我们注意到在将一个字符标注为另一个字符的过…

springboot+mybatis+mysql仿百度网盘系统2.0

springbootmybatismysql仿百度网盘系统2.0 一、系统介绍二、功能展示1.用户登陆2.主页3.全部文件4.文件上传5.文件分享6.文件分类 三、其它1.其他系统实现 一、系统介绍 系统主要功能&#xff1a; 普通用户&#xff1a;用户登陆、主页、全部文件、上传文件、文件分类、文件分部…

初始爬虫6

数据提取 数据提取总结 响应分类 结构化 json数据&#xff08;高频出现&#xff09; json模块 jsonpath模块 xml数据&#xff08;低频出现&#xff09; re模块 …

AJAX 入门 day3

目录 1.XMLHttpRequest 1.1 XMLHttpRequest认识 1.2 用ajax发送请求 1.3 案例 1.4 XMLHttpRequest - 查询参数 1.5 XMLHttpRequest - 数据提交 2.Promise 2.1 Promise认识 2.2 Promise - 三种状态 2.3 案例 3.封装简易版 axios 3.1 封装_简易axios_获取省份列表 3…