Java入门-数组

news2024/11/25 0:50:54

数组

什么是数组

数组( array )是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。

数组的内存结构是分配一系列内存大小相等的连续空间。

img

数组定义

数组定义有三种方式。

给定数组中的每个元素赋值

int[] a = {1,2,3};

分配数组空间,每个元素默认值

int[] a = new int[3];

定义一个数组,有3个元素,每个元素初始值为int的初始值:0

定义数组,内存大小由数据的多少自动识别

int[ ] a = new int[ ]{1,2,3,5};

数组特性

数组使用索引(位置)访问元素,第一个索引为0

a**[0]** =1; //第一个元素存储的整数1

数组的长度由数组的属性(数组内置的特性)length获取

int len = a**.length;**

数组访问方式

a[index] = 3; //访问第index-1个元素

a[a.length-1] = 5; //访问最后一个元素

数组遍历

遍历: 访问所有的数组元素。

循环遍历所有元素

程序案例:

int[] a = { 1, 2, 3, 4, 5 };
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + "\t");
}

程序运行结果:

1	2	3	4	5

使用增强型for循环访问所有元素。

程序案例:

int[] a = { 1, 2, 3, 4, 5 };**
for (int t : a) {
	System.*out\*.print(t+"\t");
}

程序运行结果:

1	2	3	4	5

数组常见问题

越界异常

访问数组不得超越数组索引的界限(即最小索引-0,最大索引-length-1)。

img

类型异常

数组每个元素类型必须一致。

img

数组应用

冒泡排序

  • 排序思想

数组中相邻两个元素进行比较。

  • 排序流程

  • step1: 取第进行比较一个数a[i]和其相邻的元素a[i+1]比较。

  • step2: 如果a[i] <= a[i+1], i+1,找下一个元素。

  • step3: 如果a[i] > a[i+1]则将a[i]和a[i+1]的值进行交换,将大的值向数组尾部移动

  • step4: 一轮结束后,交换后的最大值已经移动到数组的末尾(即a.length-1)位置。

  • step5: 重复前四步,完成排序。

程序案例:

int[] a = {1,33,22,24,3,8,5};
for(int i=0;i<a.length-1;i++) {
for(int j=0;j<a.length-1-i;j++) {
    if(a[j] > a[j+1]) {
        int tmp = a[j];
        a[j] = a[j+1];
        a[j+1] =tmp;
	}
  }
}

选择排序

  • 排序思想

每一轮: 选出数组中的最大值/最小值

  • 排序流程

  • step1: 取第一个数为最小值min: min = a[0];

  • step2: 使用min和数组中的每一个元素比较

  • step3: 如果min>a[i] 则 min = a[i], 并记录当前值: pos = i;

  • step4: a[pos] = a[i], a[i] = min;

程序案例:

int[] a = {1,33,22,24,3,8,5};
int min =0;
int pos = 0;
for(int i=0;i<a.length-1;i++) {
    min = a[i];
    pos = i;
    for(int j=i+1;j<a.length;j++) {
    if(min > a[j]) {
        min = a[j];
        pos = j;
    }
}

a[pos] = a[i];
a[i] = min;
}

多维数组

概念

从元素存储的内容上讲,如果元素存储的是另一个数组的引用则称为多维数组。我们一般常用二维数组,可以把它看作一个平面记录x,y轴坐标。

img

补充:引用类型,是基本类型以外的类型。比如之前输入中我们用的Scanner对象,Scanner sc =new Scanner(System.in), sc 即为引用变量,类型为Scanner,在面向对象中我们会详细讲解引用。

二维数组定义

int**[][]** a = new [3][5];

定义的第一个数值3: 定义一个一维数组,有3个元素。

定义的第二个数值5: 每个元素引用一个数组长度为5的一维数组(此数值可以省略)

二维数组访问方式

a**[i][j]** = 5**;**

多维数组应用

img

程序案例:

int sum = 0;

int[][] a= {
				{22,66,44},
				{77,33,88},
				{25,45,65},
				{11,66,99}
		};	

for (int i = 0; i < a.length; i++) {
	for (int j = 0; j < a[i].length; j++) {
			sum += a\[i]\[j];
		}
}

System.out.println("销售总和:  " + sum);

程序运行结果:

销售总和:  641

Arrays类

概念

Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法。

常用api

img

常用API举例

toString():将数组转换为字符串

程序案例:

int[] a = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(a)); 

程序运行结果:

[1, 2, 3, 4, 5]
sort():数组排序

程序案例:

int[] a ={1,7,3,22,4,5};
Arrays.sort(a);
System.out.println(Arrays.toString(a));

程序运行结果:

[1, 3, 4, 5, 7,22]
equals():判断数组是否相等

程序案例:

int[] a = {1,7,3,22,4,5};
int[] b = {1,7,3,22,4,5};
System.out.println(Arrays.equals(a,b)); 

程序运行结果:

true
copyof():拷贝数组

程序案例:

int[] a = {1,7,3,22,4,5};
int[] b = Arrays.copyOf(a,a.length);
System.out.println(Arrays.toString(b));

程序运行结果:

[1, 7, 3, 22, 4,5]

System.arraycopy()

数组的底层拷贝方式。

public static native void arraycopy(Object src, //源数组(准备拷贝的数组)**
 										int srcPos, //源数组的其实拷贝位置
                  					    Object dest,//目标数组
 									    int destPos,//目标数组的其实拷贝位置
                                        int length //拷贝长度

);

程序案例:

int[] src = {1,2,3,4,5};
int[] dest = new int[5];	
System.arraycopy(src, 0, dest, 0, 3);
System.out.println(Arrays.toString(dest));

程序运行结果:

[1, 2, 3, 0, 0]

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

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

相关文章

ESP32cam 摄像头 AIcam 全球远程视频监控的实现方法

AIcam远程视频监控 ​ 在学习应用各种物联网创客场景时我们时常会用到远程视频监控&#xff0c;当然我们可以通过发送图片的方式的来远程查看&#xff0c;但如果能视频查看将会更加的生动&#xff0c;比如在公司查看家里宠物的动态&#xff0c;鱼儿的活动情况。。。。。。 这个…

illustrator编组后透明图形也能挡住后面的不透明图形的问题

今日学习使用illustrator&#xff0c;使用3D中的突出和斜角生成了一个圆柱体之后&#xff0c;扩展图形&#xff0c;修改之后发现一个奇怪的问题&#xff0c;编组中的透明物体挡住了后面的图形&#xff08;后面的图形是有颜色的&#xff09; 后面发现&#xff0c;原来是扩展生成…

在 Amazon Bedrock 上使用 Mistral Large 处理复杂的推理任务

上个月&#xff0c;我们宣布两款高性能的 Mistral AI 模型&#xff08;即 Mistral 7B 和 Mixtral 8x7B&#xff09;已在 Amazon Bedrock 上线。作为 Mistral 的首个基础模型&#xff0c;Mistral 7B 支持英语文本生成任务&#xff0c;并具备自然编码能力&#xff1b;Mixtral 8x7…

oj赛(双周赛第二十四次)

目录 1. 八大藤校2025fall标化要求已全部出炉 2. 上海“2024人才储备”计划启动&#xff01; 伐木工小码哥 杰瑞吃奶酪 小码哥处理订单 黑手党 第k小的距离 养竹鼠 甜品配置 礼物 合数分解 均分糖果 持盾 咖啡品鉴师小码哥 1. 八大藤校2025fall标化要求已全部…

安全威胁情报的漏洞挖掘

前段时间edu上出现了两个网安总队收取安全情报&#xff0c;不收漏洞&#xff0c;下面简单分析一下如何挖掘安全情报。 在发现在edu中新增了两个网安总队收安全情报等漏洞&#xff0c;那威胁情报又会包含哪些内容呢&#xff1f;以前或许会看到各种ss网站、bc网站、yx网站满天飞&…

小程序开发SSL证书下载和安装

在开发小程序时&#xff0c;确保数据的安全传输至关重要&#xff0c;而实现这一目标的关键在于正确获取与安装SSL证书。以下详细介绍了从获取到安装SSL证书的完整流程&#xff0c;以助您为小程序构建可靠的加密通信环境。 一、小程序SSL证书类型选择&#xff1a; 域名验证型D…

简单的跳马问题,遍历dp[j][i]到某个值那个数据不对了,如何解决??

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

K8s技术全景:架构、应用与优化

一、介绍 Kubernetes的历史和演进 Kubernetes&#xff08;简称K8s&#xff09;是一个开源的容器编排系统&#xff0c;用于自动化应用程序的部署、扩展和管理。它最初是由Google内部的Borg系统启发并设计的&#xff0c;于2014年作为开源项目首次亮相。 初始阶段 Kubernetes的诞生…

测开面经分享:计算机网络part2

什么是 HTTP 和 HTTPS&#xff1f;它们之间有什么区别&#xff1f; a. HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;安全超文本传输协议&#xff09;是用于在Web上传输数据的协议。它们之间的区别在于安全性和数据传输方式。 b. HTTP是一种不安全的协议&…

聚道云连接器打通红圈CRM和金蝶云星辰,赋能环境科技公司数字化转型

一、客户介绍 某环境科技有限公司是一家专注于环保科技领域的领先企业&#xff0c;致力于为客户提供全方位的环境解决方案。公司拥有一支经验丰富、技术精湛的团队&#xff0c;不断推动环保技术的创新与应用。作为业内的佼佼者&#xff0c;该公司在环境治理、资源回收和节能减…

利用Java代码调用Lua脚本改造分布式锁

4.8 利用Java代码调用Lua脚本改造分布式锁 lua脚本本身并不需要大家花费太多时间去研究&#xff0c;只需要知道如何调用&#xff0c;大致是什么意思即可&#xff0c;所以在笔记中并不会详细的去解释这些lua表达式的含义。 我们的RedisTemplate中&#xff0c;可以利用execute方…

【D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形中的天花板实现,源码实现】

这里写自定义目录标题 D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形中的天花板实现,源码实现D3 简介D3 官网有很多例子,这里说的是Tidy tree[树形图表svg][左侧关系->中间对象<-右侧关系 ] 树形实现 D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形…

C语言易错知识点(3):字符数组的修改、sscanf、sprintf

字符数组是一个很细节的语法&#xff0c;涉及很多知识点&#xff0c;这篇文章我主要分享一下如何理解字符数组&#xff0c;以及对应的sscanf、sprintf有什么用 1.字符数组的初始化以及内容修改易错点 字符数组的初始化方式有两种&#xff0c;一种是直接用字符串进行初始化&am…

【SCI绘图】【热力图系列1 R】多特征相关性分析热力图R语言实现

SCI&#xff0c;CCF&#xff0c;EI及核心期刊绘图宝典&#xff0c;爆款持续更新&#xff0c;助力科研&#xff01; 本期分享&#xff1a; 【SCI绘图】【热力图系列1 R】多特征相关性分析热力图R语言实现 1.环境准备 library(gplots) library(RColorBrewer) 2.数据示例 ###…

Qt快速入门到熟练(3.程序运行发布与设置图标)

程序运行发布 当我们执行过qt过后&#xff0c;将会在项目目录里面生成出一个debug构建目录&#xff0c;点击进去选择debug文件夹&#xff0c;就可以看到我们生成出来的可执行文件。 很显然我们的项目就叫做MyFirstWidget&#xff0c;所以生成的可执行文件在没有人为设置的情…

深入理解JVM垃圾收集器

相关系列 深入理解JVM垃圾收集算法-CSDN博客 目前市面常见的垃圾收集器有Serial、ParNew、Parallel、CMS、Serial Old、Parallel Old、G1、ZGC以及有二种不常见的Epsilon、Shenandoah的&#xff0c;从上图可以看到有连线的的垃圾收集器是可以组合使用&#xff0c;是年轻代老年代…

LeetCode初级算法书Java题解日常更新

LeetCode初级算法高效题解&#xff08;含思路注释&#xff09; 文章目录 LeetCode初级算法高效题解&#xff08;含思路注释&#xff09;前言一、数组1.删除排序数组中的重复项2.买卖股票的最佳时机 II3.旋转数组4.存在重复元素 总结 前言 决定用四个月过一下算法 一、数组 1.…

全国月均太阳辐射空间分布数据/月度降雨量分布/月均气温分布

引言 我国幅员辽阔&#xff0c;地形复杂&#xff0c;位于亚欧大陆东部&#xff0c;太平洋西岸。气候特征为&#xff1a;季风气候明显&#xff0c;大陆性气候强&#xff0c;气候类型复杂多样&#xff0c;水热同期。我国太阳辐射西部多于东部&#xff0c;北部多于南部&#xff0c…

【算法基础】插入排序与二分查找、升级二分查找

文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌&#xff0c;不断…

【企业场景】设计模式重点解析

设计模式 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff1a; 我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;我们自己开发业务使用的设计模式。 在平时的业务开发中&#xff0c;其实真正使用设计模式的场景并不多&#xff0c;虽然设计号…