Java 数组
在 Java 语言中,数组是一种基本的数据结构,可以存储一组相同类型的数据。本篇技术博客将详细介绍 Java 语言中的数组,包括一维数组和多维数组,以及数组的使用方法和注意事项。
一维数组
一维数组是指只有一行的数组,也就是最常见的数组形式。在 Java 语言中,一维数组的定义和初始化方式如下:
// 定义一个长度为 5 的整数数组
int[] arr1 = new int[5];// 定义一个包含初始值的整数数组
int[] arr2 = new int[]{1, 2, 3, 4, 5};// 省略数组长度的定义方式
int[] arr3 = {1, 2, 3, 4, 5};
其中,第一种定义方式需要指定数组的长度,第二种定义方式需要指定数组的初始值,第三种定义方式可以根据初始值自动推导出数组的长度。
访问和修改数组元素
一维数组中的元素可以通过下标来访问和修改,下标从 0 开始。例如:
int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[0]); // 输出 1
arr[0] = 0;
System.out.println(arr[0]); // 输出 0
在上面的示例中,定义一个长度为 5 的整数数组,并将第一个元素修改为 0。通过下标访问数组元素时,下标不能超出数组的范围,否则会抛出数组越界异常。
数组遍历
通常情况下,需要对数组中的每个元素进行操作,此时可以使用循环遍历数组。在 Java 语言中,可以使用 for 循环或者 foreach 循环遍历数组。例如:
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");
}
System.out.println();
for (int x : arr) {System.out.print(x + " ");
}
在上面的示例中,使用 for 循环和 foreach 循环分别遍历数组中的每个元素,并输出结果。
多维数组
多维数组是指由多个一维数组组成的数组,也就是数组中的数组。在 Java 语言中,多维数组的定义和初始化方式如下:
// 定义一个二维数组
int[][] arr1 = new int[2][3];// 定义一个包含初始值的二维数组
int[][] arr2 = {{1, 2, 3}, {4, 5, 6}};
其中,第一种定义方式需要指定二维数组的行数和列数,第二种定义方式可以根据初始值自动推导出二维数组的行数和列数。
访问和修改数组元素
多维数组中的元素可以通过多个下标来访问和修改,下标从 0 开始。例如:
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
System.out.println(arr[0][0]); // 输出 1
arr[0][0] = 0;
System.out.println(arr[0][0]); // 输出 0
在上面的示例中,定义一个二维数组,并将第一个元素修改为 0。通过多个下标访问数组元素时,下标不能超出数组的范围,否则会抛出数组越界异常。
数组遍历
多维数组的遍历可以使用嵌套循环来实现。例如:
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
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[] scores = {90, 80, 70, 60};
double[] salaries = {5000.0, 6000.0, 7000.0, 8000.0};
实现数据结构
数组也可以用于实现各种数据结构,例如队列、堆栈、哈希表等等。在实现这些数据结构时,数组可以作为基本的数据存储结构。
图像处理
在图像处理领域,数组也是非常常见的数据结构。使用数组可以将图像数据存储为像素矩阵,进行各种处理,例如调整亮度、对比度等等。
int[][] pixels = {{255, 255, 255}, {0, 0, 0}, {255, 0, 0}};
排序和查找
数组也可以用于排序和查找等操作。Java 中提供了 Arrays 类和 Collections 类来支持这些操作。例如,可以使用 Arrays 类中的 sort 方法对数组进行排序,使用 binarySearch 方法进行二分查找。
int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
Arrays.sort(arr);
System.out.println(Arrays.binarySearch(arr, 5));
数组的使用注意事项
在使用数组时,需要注意以下几点:
数组的长度是不可变的
一旦定义了数组的长度,就无法更改。因此,需要在定义数组时考虑好数组的长度,避免后续需要动态扩容,这可能会导致性能损失。
数组下标从 0 开始
访问和修改数组元素时需要注意数组越界的问题。数组下标从 0 开始,因此数组的有效下标范围是从 0 到 length-1。如果访问或修改超出了这个范围,就会抛出 ArrayIndexOutOfBoundsException 异常。
int[] arr = {1, 2, 3};
System.out.println(arr[3]); // 抛出 ArrayIndexOutOfBoundsException 异常
数组是对象
数组是对象,因此可以作为参数传递给方法,也可以作为方法的返回值。但是,需要注意数组的引用传递问题,如果将一个数组作为参数传递给方法,方法内部修改数组的值,那么数组的值也会被修改。
void addOne(int[] arr) {for (int i = 0; i < arr.length; i++) {arr[i] += 1;}
}int[] arr = {1, 2, 3};
addOne(arr);
System.out.println(Arrays.toString(arr)); // 输出 [2, 3, 4]
遍历数组时要注意数组的长度
在遍历数组时,需要注意数组的长度。数组的长度可以通过 length 属性获取。
int[] arr = {1, 2, 3};
for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);
}
结语
本篇技术博客介绍了 Java 语言中的数组,包括一维数组和多维数组的定义、初始化、访问、修改和遍历方式,以及注意事项。掌握数组的使用方法对于 Java 开发者来说是非常重要的,希望本文对您有所帮助。
相关文章:
Java 数组
在 Java 语言中,数组是一种基本的数据结构,可以存储一组相同类型的数据。本篇技术博客将详细介绍 Java 语言中的数组,包括一维数组和多维数组,以及数组的使用方法和注意事项。 一维数组 一维数组是指只有一行的数组,…...
CSDN 编程竞赛五十八期题解
竞赛总览 CSDN 编程竞赛五十八期:比赛详情 (csdn.net) 竞赛题解 题目1、打家劫舍 有一个小偷计划偷窃沿街的房屋,每间房内都藏有一定的现金,影响偷窃行为的唯一制约因素就是相邻的房屋装有相互连通的防盗系统。如果两间相邻的房屋在同一晚…...
Unity入门6——光源组件
一、参数面板 二、参数介绍 Type:光源类型 Spot:聚光灯 Range:发光距离Spot Angle:光锥角度Directional:方向光Point:点光源Area(Baked Only):面光源 仅烘焙。预先算好&…...
C语言之动态内存分配(1)
目录 本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 动态内存管理—自己维护自己的内存空间的大小 首先我们申请一个变量,再申请一个数组 这是我们目前知道的向内存申请…...
AIGC新时代,注意政策走向,产业方向,拥抱可信AI。需要了解基本理论,基础模型,前沿进展,产品应用,以及小小的项目复现
AIGC(AI-Generated Content,AI生成内容)是指基于生成对抗网络(GAN)、大型预训练模型等人工智能技术的方法,通过对已有数据进行学习和模式识别,以适当的泛化能力生成相关内容的技术。类似的概念还…...
如何白嫖一年CSDN会员?618活动!亲测有效!!!
活动详情 CSDN会员免费送一年,仅剩3天! 下载权益延长一年! 一年一次的机会,错过了就要再等明年! 博主已经领取到了! 会员权益 1、修改专属域名,别人都是https://blog.csdn.net/qq_xxxxxxxx&a…...
微服务: 00-rabbitmq出现的异常以及解决方案
目录 前言: 问题概述: 1. rabbitmq初始安装配置异常 -> 1.1 rabbitmq报您与此网站连接不是私密连接 --->1.1.1 上述问题解决方案 ---> 1.1.2 依次执行下面代码 -> 1.2 解决用户的No access情况 -> 1.2.1 使用设置的账号密码进行登录 -> 1.2.2 点击 Ad…...
Vue3与Vue2比较
Vue.js 3相对于Vue.js 2带来了一些重大变化,其中包括一些语法变化。 下面是Vue.js 2和Vue.js 3的一些语法差异比较: 一、语法差异比较 1.组件的注册方式不同 在Vue.js 2中,我们使用Vue.component()或者Vue.extend()方式创建一个组件。但是…...
如何对待工作中的失误?
在日复一日的工作中,我们免不了会产生一些失误,会因此感到沮丧和失望。但如何正确地对待和处理这些失误才是最重要的,它直接影响到我们的工作表现和个人成长。一起来谈谈作为职场人的你时如何处理工作中的失误的吧! 一、在面对失…...
使用css3如何实现一个文字打印效果
前言 在很多网站首页介绍页里,为了吸引用户,暂留更长时间,使用了一些css3动画的 示例效果 文字打印.gif 实现这个动画原理 想要实现这个动画,改变元素的宽度,结合动画css3关键帧实现 具体代码如下所示 <!DOCTYPE html> <html lang"en"><head><m…...
【雕爷学编程】Arduino动手做(115)---HB100多普勒雷达模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…...
深度学习笔记之Transformer(一)注意力机制基本介绍
深度学习笔记之Transformer——注意力机制基本介绍 引言回顾: Seq2seq \text{Seq2seq} Seq2seq模型中的注意力机制注意力机制的简单描述注意力机制的机器学习范例: Nadaraya-Watson \text{Nadaraya-Watson} Nadaraya-Watson核回归 Nadaraya-Watson \text…...
基于SpringBoot的SSM整合案例 -- SpringBoot快速入门保姆级教程(四)
文章目录 前言1.设计创建数据库表tbl_book2.创建新的SpringBoot模块,勾选相关依赖3. 添加SpringBoot创建项目时没有提供的相关坐标4.根据数据库表创建实体类Book5.编写dao层操作BookDao6.编写Service服务层接口BookService7.编写服务层实现类BookServiceImpl8.编写B…...
占据80%中国企业出海市场,亚马逊云科技如何为出海客户提供更多资源和附加值
亚马逊云科技就可以做到,作为占据80%中国企业出海市场的亚马逊云科技,其覆盖全球的业务体系,从亚马逊海外购、亚马逊全球开店、亚马逊智能硬件与服务,Amazon Alexa,Amazon Music都是属于亚马逊云科技“梦之队”的一员。…...
系统架构设计师笔记第11期:信息安全的抗攻击技术
拒绝服务攻击 拒绝服务攻击(Denial of Service,DoS)是一种旨在使目标系统无法提供正常服务的攻击方式。攻击者通过向目标系统发送大量的请求或占用系统资源,超过系统的承载能力,导致系统过载或崩溃,从而使…...
TLD7002学习笔记(二)-使用S32K144驱动TLD7002
文章目录 1. 前言2. 评估板简介3. 官方驱动3.1 官网驱动的介绍3.2 官方驱动的移植3.3 官方驱动的使用 4. 参考资料 1. 前言 本篇文章是TLD7002学习笔记的第二篇,主要是介绍如何使用S32K144驱动TLD7002-16ES。为此,笔者做了一套基于TLD7002-16ES的评估板…...
[元带你学: eMMC协议详解 14] 数据擦除(Erase) 详解
依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 内容摘要 全文 4200字, 主要内容介绍了各种擦除操作概念以记用法,总结了不同擦除操作的区别, 根据不同安全级别和应用场景…...
【程序人生-Hello‘s P2P】哈尔滨工业大学深入理解计算机系统大作业
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 xxxx 学 号 2021xxxx 班 级 210xxxx 学 生 xx 指 导 教 师 xxx 计算机科学与技术学院 2023年5月 摘 要 HelloWorld是每个程序员接触的第一个程序,表面上平平无奇的它背后却是由操作系统许多设计精巧的机制支撑…...
Android Studio入门
首先确保系统已经安装好JDK和Android SDK Android SDK的安装有两种方案 方案一:直接下载包安装 官网下载 国内下载 方案二:使用命令行工具进行安装 在Android Studio官网下载Command line tools 最新:如果使用 Android Studio,…...
r2pm -ci r2ghidra 时报错:checking pkg-config flags for r_core... no
参考网址: sys/python.sh fails with checking pkg-config flags for r_core... no Issue #1943 radareorg/radare2 GitHub 进入目录/root/.local/share/radare2/r2pm/git/r2ghidra查看configure文件,查找报错位置 执行指令 : # pkg-co…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
