Java入门-数组

数组

什么是数组

数组( 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.rhkb.cn/news/306205.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudAlibabaSeate处理分布式事务

SpringCloudAlibabaSeate处理分布式事务 1、部分面试题 微服务boot/cloud做的项目&#xff0c;你不可能只有一个数据库吧&#xff1f;那么多个数据库之间如何处理分布式事务的&#xff1f; 一个场景&#xff1a;在订单支付成功后&#xff0c;交易中心会调用订单中心的服务把订…

15. 【Android教程】按钮 Button/ImageButton

在前面两章我们讲了 TextView&#xff0c;它是一个纯输出的控件&#xff1b;而 EditText 在 TextView 基础之上加入了简单的输入功能&#xff1b;今天要讲的 Button 是一个和用户互动感很强的控件&#xff0c;从今往后不再是单纯的文本展示&#xff0c;我们可以通过 TextView、…

2024年第五届计算机视觉与信息技术国际会议(CVIT 2024)即将召开!

2024年第五届计算机视觉与信息技术国际会议&#xff08;CVIT 2024&#xff09;将于2024年8月16-18日在北京举行。CVIT 2024由北方工业大学主办&#xff0c;国内外的专家学者将齐聚一堂&#xff0c;共同分享最新的技术突破、研究方法和应用案例&#xff0c;共同推动计算机视觉与…

选择排序解读

在计算机科学中&#xff0c;排序算法是一种将数据元素按照某种顺序排列的算法。今天&#xff0c;我们要探讨的是选择排序&#xff08;Selection Sort&#xff09;&#xff0c;这是一种简单直观的排序方法&#xff0c;通过不断选择剩余元素中的最小&#xff08;或最大&#xff0…

MySOL之旅--------MySQL数据库基础( 3 )

本篇碎碎念:要相信啊,胜利就在前方,要是因为一点小事就停滞不前,可能你也不适合获取胜利,成功的路上会伴有泥石,但是走到最后,你会发现身上的泥泞皆是荣耀的勋章! 今日份励志文案: 凡是发生皆有利于我 目录 查询(select) 1.全列查询 2.指定列查询 3.查询字段为表达式 ​编…

加固系统安全,防范ssh暴力破解之Fail2Ban

你是否还在担心你的服务器被攻击&#xff1f;你是否还在担心你的博客的安全&#xff1f;你是否还在担心你的隐私&#xff1f;别急fail2ban它来了&#xff0c;它可以解决你的一切问题。 Fail2Ban 是什么&#xff1f; 现在让我们一起来认识一下今天的主角 – Fail2Ban。简单说来…

【Linux 命令】内核、驱动调试手段总结

文章目录 1. printk2. strace3. ltrace4. ptrace5. ftrace6. 动态打印7. perf8. devmem9. demsg参考&#xff1a; 1. printk printk() 是 Linux 内核中最广为人知的函数之一。它是我们打印消息的标准工具&#xff0c;通常也是追踪和调试的最基本方法。 虽然 printk() 是基于 …

深入理解中文编码:原理、应用与实践

title: 深入理解中文编码&#xff1a;原理、应用与实践 date: 2024/4/12 15:09:00 updated: 2024/4/12 15:09:00 tags: 中文编码字符集编码标准存储处理转换技术安全加密未来趋势 第一章&#xff1a;引言 编码的基本概念与作用 编码是将信息转换为特定格式以便存储、传输或处…

在启动Windows安装的Nacos时报错

Please set the JAVA_HOME variable in your environm 有可能时jdk版本过低引起的&#xff0c;所以安装一个1.8版本以上的jdk 在安装jdk完成以后配置好环境变量&#xff0c;测试一下 winr打开控制台&#xff0c;输入&#xff1a; Java -version 出现如下情况说明jdk安装配置…

护眼台灯哪个牌子最好,五款高中生护眼台灯推荐

​在当今时代&#xff0c;孩子们背负着沉重的学业负担&#xff0c;随着他们年龄的增长&#xff0c;作业量也随之增加&#xff0c;这意味着每天用眼的时间越来越长。尤其是在夜晚&#xff0c;许多孩子学习到深夜&#xff0c;若照明不当&#xff0c;极易导致视力下降。因此&#…

Gson的用法

1. 导入依赖 <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version> </dependency> 2. 使用Gson进行解析 2.1 Gson解析普通对象 package com.jiang.partnetbackend.…

LLM大语言模型(九):LangChain封装自定义的LLM

背景 想基于ChatGLM3-6B用LangChain做LLM应用&#xff0c;需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。 LangChain中对LLM的封装 继承关系&#xff1a;BaseLanguageModel——》BaseLLM——》LLM LLM类 简化和LLM的交互 _call抽象方法定义 ab…

DXP学习002-PCB编辑器的环境参数及电路板参数相关设置

目录 一&#xff0c;dxp的pcb编辑器环境 1&#xff0c;创建新的PCB设计文档 2&#xff0c;PCB编辑器界面 1&#xff09;布线工具栏 2&#xff09;公用工具栏 3&#xff09;层标签栏 ​编辑 3&#xff0c;PCB设计面板 1&#xff09;打开pcb设计面板 4&#xff0c;PCB观…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表&#xff08;一&#xff09;-CSDN博客 来继续实现单链表 1.查找数据 在…

前端开发学习笔记 3 (Chrome浏览器调试工具、Emmet语法、CSS复合选择器、CSS元素选择模式、CSS背景)

文章目录 Chrome浏览器调试工具Emmet语法CSS复合选择器后代选择器子选择器并集选择器伪类选择器 CSS元素选择模式元素选择模式概述CSS块标签CSS行内标签CSS行内块标签CSS元素显示模式转换 CSS背景CSS背景颜色CSS背景图片CSS背景图片平铺CSS背景图片位置CSS背景图片固定CSS背景复…

SpringAI初体验之HelloWorld

目录 前言1.准备工作2.初始化项目3.解决问题3.1 Connection Time out 连接超时问题3.2 You exceeded your current quota 额度超限问题 4.访问调用5.总结 前言 在逛SpringBoot页面时突然看到页面上新增了一个SpringAI项目,于是试了一下&#xff0c;感觉还行。其实就是封装了各家…

Redis性能管理和集群的三种模式(二)

一、Redis集群模式 1.1 redis的定义 redis 集群 是一个提供高性能、高可用、数据分片、故障转移特性的分布式数据解决方案 1.2 redis的功能 数据分片&#xff1a;redis cluster 实现了数据自动分片&#xff0c;每个节点都会保存一份数据故障转移&#xff1a;若个某个节点发生故…

网络协议学习——以太网协议

目录 ​编辑 一&#xff0c;以太网简介 二&#xff0c;以太网通信的过程 为什么不用IP地址&#xff1f; 过程 MAC帧 MAC帧的字段介绍 ARP协议 传输过程的一些问题 RARP协议 提高效率 三&#xff0c;其他问题 ARP诈骗问题 URL解析过程 一&#xff0c;以太网简介 …

AI大模型基石:文字与数字的起源与演变

AI大模型基石&#xff1a;文字与数字的起源与演变 1、文字 1.1、起源 我们的祖先在还没有发明文字和语言之前就已经开始使用“咿咿呀呀”的声音来传播信息了&#xff0c;比如在野外活动遇到危险&#xff0c;然后发出“咿咿呀呀”的声音来提醒同伴小心&#xff0c;同伴在接收到…

GEE数据集——1986年—2022年加拿大全国烧毁面积综合数据 (NBAC)

简介 加拿大全国烧毁面积综合数据 (NBAC) 全国烧毁面积综合数据 (NBAC) 是一个地理信息系统数据库和系统&#xff0c;用于计算自 1986 年以来每年全国范围内烧毁的森林面积。这些数据用于帮助估算加拿大的碳排放量。烧毁面积是通过评估一系列可用数据源确定的&#xff0c;这些…