Java基础数组详解2

NFC门禁卡复制全解析:从M1卡到UID卡的攻防实践 本文深入解析了NFC门禁卡的安全机制与攻防实践。从M1卡基于Crypto1算法的原理漏洞讲起,详细阐述了利用Proxmark3等工具进行侦听、破解密钥及使用UID卡进行复制的完整攻击链条。同时,为防御方提供了从升级CPU卡、启用全扇区认证到部署多因子验证的系统性防护策略,旨在帮助管理员构建更稳固的物理安全防线。 阅读详情

数组目录

八:数组的使用

在这里插入图片描述

练习

普通for循环练习:

在这里插入图片描述

重点练习(数组作为方法入参 数组作为返回值 增强for循环):

内容讲解:
重点理解代码内容
增强for循环
JDK1.5 增强for循环没有下标
array 表明数组下标值的命名 arrays 表明数组
所有对于打印数组哪个下标的值 增强for循环就不适合(增强for循环适合打印数组的结果)



数组作为返回值可以通过反转数组方法(reverse方法)来描述 重点:数组的长度arrays.length 永远比数组最后一个的arrays[max]中的max大于一个数字 所以理解以下两句话

//int i = 0 ,j=arrays.length-1; i <arrays.length;
//明白以上该行代码在for循环中的代码的作用:result[j]=arrays[i];




注意代码中第二个方法的返回值为数组
而数组不能直接打印
所以要先定义数组的命名然后再通过for循环打印出来
// reverse(arrays); 即从该代码转换到以下代码
// int[] reverse = reverse(arrays);
int[] reverse = reverse(arrays);
printArray(reverse);//打印数组

在这里插入图片描述

九:多维数组

在这里插入图片描述

在这里插入图片描述

练习



重点理解:

array 【4】【2】
/*
1,2 array[0]数组一
2,3 array[1]数组二
3,4 array[2]数组三
4,5 array[3]数组四
*/
二维数组的意思为一共有几个一维数组 比如下面:有四个一维数组 每个数组里有两个值
//int[][] array={{1,2},{2,3},{3,4},{4,5}};
三维数组意思为 一共几个二维数组
比如下面 一共有三个二维数组 每个二维数组里面有三个一维数组
//int [][][] array1={ {{1,2},{2,3},{3,4}} ,{{1,2},{2,3},{3,4}},{{1,2},{2,3},{3,4}}};




在这里插入图片描述

十:Arrays类

在这里插入图片描述

重点:
查看JDK帮助文档
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是"不用”而不是“不能")

具有以下常用功能:
◆给数组赋值:通过fill方法。
◆对数组排序:通过sort方法,按升序。
◆比较数组:通过equals方法比较数组中元素值是否相等。
◆查找数组元素:通过binarySearch方法能对排序好的数组进行分查找法操作。
具体一些使用在以下练习代码中学习




练习

重点理解:
数组不能直接打印
System.out.println(a);//如果直接打印出现[I@b4c966a
打印数组元素Arrays.toString
System.out.println(Arrays.toString(a));



在这里插入图片描述

十一:冒泡排序

在这里插入图片描述

冒泡排序重点:
如何调换两个值的左右顺序
可以调用一个对象 将A对象赋予这个对象
然后将B对象赋予A对象
再然后将A赋予的这个对象赋予给B
类似于两杯水互换借用一个空杯子




Java中不能用
a=b
b=a
因为:当b赋值于a时 那么a b 两个值是相等的

在这里插入图片描述

练习:

代码重点:
调用完我们自己写的排序方法后
返回一个排序后的数组(为排序后的数组定义一个新名字)
int[] sort = sort(a);
然后输出数组里面的元素
System.out.println(Arrays.toString(sort));



//外层循环 判断我们这个要走多少次;
//第一次一定走array.length-1次
for (int i = 0; i < array.length-1; i++)



//内层循环 比较判断两个数 如果第一个数比第二个数大 则交换位置
//并且每次比较的次数一次比一次少一(重点了解为什么是array.length - 1 - i)
for (int j = 0; j < array.length - 1 - i; j++)



定义一个flag标识位 减少没有意义的比较
boolean flag=false;
//重点:如果中间已经排序好大小 那么下一次比较flag不变
// 然后直接跳出总循环(这对于交换了几个数就已经有序来说,还是有用的)
//所以要放在第一个for循环级别下
if (flag==false){
break;
};



在这里插入图片描述

十二:稀疏数组(数据结构)

在这里插入图片描述

上图五子棋黑白棋的稀疏数组

在这里插入图片描述

在这里插入图片描述

练习

代码解释重点:
创建一个稀疏数组的数组(五子棋盘转换为稀疏数组为三行三列)



定义count的意思:将数组中非零的值放到
稀疏数组中对应的行中和对应的列中
比如:当二维数组中第一个数组中有非零值 i=0
则count+1(count+1 代表非零值加1) array2[count][0]=i
第一个数组的第二个值非零 j=1
则 [count][1]=j 对应着稀疏数组的位置
易错 i j 为: i为二维数组中的第i个数组 j为二维数组中第i个数组的j个元素
只是要把二维数组转换为稀疏数组 对应的i j转换为 稀疏数组里面的行和列(重点理解)



//遍历二维数组 将非零的值存放在稀疏数组中
int count=0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
//定义count的意思:将数组中非零的值放到
//稀疏数组中对应的行中和对应的列中
//比如:当二维数组中第一个数组中有非零值 i=0
//则count+1(count+1 代表非零值加1) array2[count][0]=i
//第一个数组的第二个值非零 j=1
//则 [count][1]=j 对应着稀疏数组的位置
//易错 i j 为: i为二维数组中的第i个数组 j为二维数组中第i个数组的j个元素
//只是要把二维数组转换为稀疏数组 对应的i j转换为 稀疏数组里面的行和列(重点理解)
if (array1[i][j]!=0){
count++;//当非零值增加时 那么count也增加(count对应这稀疏数组的第一列的值也就是对应着第几个数组存在非零值)
array2[count][0]=i;//意思为:稀疏数组count行 第一列的值为i(稀疏数组第count个数组的第一个值为i)
array2[count][1]=j;//意思为:稀疏数组count行 第二列的值为j
// (对应第count个数组的第j个值为非零值)(稀疏数组第count个数组的第二个值为j)
array2[count][2]=array1[i][j];
}
}
}




count++;//当非零值增加时 那么count也增加(count对应这稀疏数组的第一列的值也就是对应着第几个数组存在非零值)
array2[count][0]=i;//意思为:稀疏数组count行 第一列的值为i(稀疏数组第count个数组的第一个值为i)
array2[count][1]=j;//意思为:稀疏数组count行 第二列的值为j
// (对应第count个数组的第j个值为非零值)(稀疏数组第count个数组的第二个值为j)
array2[count][2]=array1[i][j];//这里存放的是真正的有效值 真正的非零值的数值大小(而其他的是描述存放数值的位置在哪里)




//2 给其中的元素赋值 (就是把稀疏数组中存储的有效的数值放回到正常数组的位置上)
//重点 重点 重点!!!赋值 i=1(而不是i=0) 的原因: 因为在稀疏数组中循环第一行为头部信息不用循环
// (第一行存放的信息为一共有几个数组 每个数组有几个值 而且一共有几个有效值)
for (int i=1; i < array2.length; i++) {
//重点重点重点!!!就是将稀疏数组中存储的有效值放在二维数组的第几个数组的第一个元素位置
array3[array2[i][0]] [array2[i][1]]=array2[i][2];
**}

在这里插入图片描述

【无人机对抗】基于matlab无人机红蓝对抗仿真【含Matlab源码 4436期】 无人机红蓝对抗仿真 完整代码,包运行;可提供运行操作视频!适合小白! 阅读详情

相关推荐

HWSD全球土壤数据下载处理

下载地址: http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/

江北20190411的博客 3万+

代码随想录学习-Day1(数组理论基础)

学习Day1: 数组: 数组是存放在连续内存空间上的相同类型数据的集合。 数组的下标都是从0开始的 数组内存空间的地址是连续的 数组的元素是不能删除的,只能覆盖 /* 一维数组打印内存地址 */ public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7}; System.out.println(arr); } [I@b4c966a /* 二维数组打印内存地址 */

wusheng1998的博客 180

Win10无外网热点搭建全指南:纯局域网通信与设备互联

热点并不是只有共享上网一种用途。在很多工程与办公场景中,我们需要的是让手机、笔记本、开发板等设备临时组成一个纯内网,完成文件传输、端口调试或局域网联机,而不需要任何外网出口。Win10笔记本在不连接互联网的状态下,借助系统移动热点或netsh承载网络,完全可以创建一个无外网热点,实现设备间二层互通。其核心在于利用SoftAP建立虚拟无线接入点,并绕开或禁用ICS的NAT转发。掌握这一技术,可在会议、出差、物联网调试等场景中快速搭建临时局域网,无需额外路由器。本文详细梳理三种实现路径、操作步骤及常见故障排查,

weixin_29230773的博客 239

Java 学也学不明白之反射机制。

一、基本概念 主要是指程序可以访问、检测和修改它本身状态或行为的一种能力, 并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。Java 中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在 运行时装配,无需在组件之间进行源代码链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到 JVM 中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。 通过java中的反射机制可以操作字节码文件(读取和修改) 反射机制相关的类在

我这么骄傲的一个人。 565

自动驾驶系统架构解析:从传感器到决策控制的完整链路(附实际案例)

本文深入解析了自动驾驶系统从感知、决策到控制的完整架构链路。通过对比摄像头、毫米波雷达、激光雷达等核心传感器的特性与选型策略,阐述了多传感器融合的必要性。文章结合行为决策、运动规划及控制执行的实际案例,揭示了系统集成、数据闭环与功能安全等工程化落地的关键挑战,为理解自动驾驶技术提供了清晰的蓝图。

weixin_29051811的博客 339

【开关电源】开关电源实战经验分享

开关电源原理设计、Layout设计经验分享

weixin_42098658的博客 4172

Java学习第五天

数组、内存分配、方法、基本和引用数据类型、综合练习

2302_79915702的博客 535

海康线扫相机平场矫正实战:从原理到精准成像

本文深入解析了海康线扫相机平场矫正的原理与实战操作。通过拆解暗场与明场矫正的物理意义,揭示了其消除系统噪声、补偿像素响应不均的核心机制。文章详细指导了在海康相机上进行平场矫正的标准化流程、关键参数设置(如行高、灰度值控制)及常见误区,并提供了针对高行频匹配、环境稳定性维护等进阶调优技巧与问题排查指南,旨在帮助用户实现从原理理解到精准成像的跨越。

tomato的博客 795

python print() 如何解决打印数组无法完整输出问题(省略号显示, 显示不全)

引用 加上代码: import numpy as np np.set_printoptions(threshold=np.inf)

Dontla的博客 5370

EtherCAT主站SOEM -- 1 -- SOEM之ethercattype.h文件分析

“ethercattype.h” 文件用于支持 EtherCAT 网络通信,提供了各种类型定义和宏,以便开发者更轻松地开发 EtherCAT 相关应用程序。这些定义包括数据类型、命令类型、状态类型和错误类型,以支持 EtherCAT 通信。根据具体应用需求,还可以调整一些超时和帧长度设置。这些定义用于处理函数调用的结果,如 EC_NOFRAME(没有帧返回)、EC_ERROR(一般错误)、EC_TIMEOUT(请求超时)等。这些定义用于处理 EtherCAT 命令,例如 EC_CMD_APRD(自动递增读取

常驻客栈的博客--嵌入式EtherCAT 2717

GEO的工作原理,以及GEO会催生出更多的爬虫岗位吗?

摘要: GEO(生成式引擎优化)是提升内容在AI搜索(如ChatGPT、Perplexity等)中引用率的新策略,核心在于优化内容的可抓取性、语义清晰度、权威性。与传统SEO不同,GEO聚焦AI的引用逻辑,需通过爬虫监控AI回答、逆向分析引用源特征(如结构化数据、权威背书),并构建自动化工具优化内容。爬虫工程师需转型为“AI可见性基础设施构建者”,重点关注高权威站点、知识库及官方信息源,同时确保技术可抓取性(如放行AI爬虫UA)。GEO的核心是从“排名”转向“被AI引用”,强调实体识别与动态对话适配。

数据知道的博客 4643

数组的输入与输出

本文目的在于为大家介绍关于数组的输入与输出常用的几个执行代码,包括printf,putchar,puts,scanf,getchar,gets。

qimou14的博客 4万+

实时系统vxWorks - 虚拟机环境搭建

概述VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的...

不只会拍照的程序猿 7854

JAVASE JAVA基础

JAVASE JAVA基础 概述与准备 java三个版本: J2SE:基础与核心 J2ME:移动版 J2EE :企业版 安装jdk 一次编写处处运行 开发人员需要下载并安装jdk 下载jdk,安装jdk,配置环境变量windows(大小写不区分)并验证: 1.新建java_home:jdk的根目录 D:\Java\jdk1.8.0_71 2.path(必须)D:\Java\jdk1.8.0_71...

weixin_42142764的博客 179

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java基础(四)| 数组及内存分配详解

⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开发的代码能力打下坚实的基础。 🔥本文已收录于JAVA基础系列专栏: Java基础教程 免费订阅,持续更新。

timerring的博客 6739

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java数组详解

1 数组 概念 同一种类型数据的集合。其实数组就是一个容器。 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素。 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 示例:int[] arr = new int[5]; 格式2:

oguro的博客 13万+

Java数组详解

Java数组详解 一. 什么是数组 二. 数组的声明和创建 1. 数组的声明 2. 数组的创建 三. 三种初始化和内存分析 1. 三种初始化 2. 内存分析 四. 数组的特点 1. 四个基本特点 2. 数组边界 五. 数组的使用 1. for-Each 循环 2. 数组做方法参数 3. 数组做返回值 六. 多维数组 1. 多维数组的动态初始化(以二维数组为例) 2. 多维数组的引用(以二维数组为例) 七. Arrays类讲解 八. 稀疏数组(扩展)

Monuomeng的博客 8632

Java数组详解:从基础到高级应用

数组(Array)是一种线性数据结构,用于存储一组相同类型的元素。数组中的每个元素通过索引(Index)进行访问,索引通常从0开始。数组的大小在创建时确定,且在Java中是固定的。Java数组是编程中的基本构建块,理解并熟练掌握数组的概念、操作和应用场景,对于编写高效、可维护的代码至关重要。通过合理使用数组,可以实现复杂的逻辑和功能,提高代码的可读性和可维护性。在实际编程中,应遵循数组的最佳实践,避免数组的局限性,合理选择替代方案。通过不断练习和应用,可以提升编程技能,编写出更清晰、更高效的代码。

xycxycooo的博客 2711

Java数组基础详解

Java数组基础相关内容

感谢阅读 890

Java数组详解(Java基础)

本章小结了Java数组的基本语法,分享给新学习的小伙伴,分享获取新知大家一起进步。 文章目录一.引言二.数组三.数组的使用四.数组的内存分配 一.引言 回顾数据类型: (1)基本类型 byte short int long float double char boolean (2)引用类型 类 数组 接口 枚举 注解 变量:内存中的一块存储空间, 存储的就是常量。 特点:一个变量只能...

末尾卡片和博主交流学习! 2499

java数组基础详解

java数组基础详解 一、引言 二、声明数组 三、初始化数组3.1静态初始化3.2动态初始化 四、访问数组元素 五、遍历数组 六.分析数组内存 七、数组常见异常 7.1索引越界异常ArrayindexOutOfBoundsException7.2空指针异常NullPointerException

weixin_47138646的博客 1018

JAVA基础:数组

Java中数组的基本使用

愿你我都能实现自己的梦想 2320

【Java基础】数组详解,这一篇就够了!

本文是一篇Java数组基础教程,主要涵盖以下内容: 数组基本概念:介绍数组作为存储相同类型数据的容器特性,包括固定长度、相同类型、有序排列和0起始索引等特点。 数组操作:详细讲解数组的声明、创建、初始化和访问方法,包括一维数组和多维数组。 数组遍历:展示三种遍历方式(普通for循环、增强for循环和Stream API)的具体实现。 常用工具类:介绍java.util.Arrays类提供的排序、搜索、填充、复制等实用方法。 重难点解析: 数组内存模型 数组边界检查 数组长度不可变性 数组与对象的关系 核心代

红目香薰 1002

【Java基础】数组基础

Java当中的数组在栈中被使用,而数组指向堆中的数据才是真实的数据。数组只是引用了这些数据,因此,我们称数组为引用类型。当数组指向对应的数据时,我们称为”引用指向对象“。如下图所示,我们假设0x99是堆中的数据,数组array在栈中存放着这些数据的地址,通过调用指向堆中各自对应的数据,这就是”引用“。那么有没有可能存在数组不指向对象呢?在上面的代码中,arr2并不存在引用的情况,arr2这个引用不指向任何一个对象,只对数组进行了初始化。在运行了array[0]之后,则数组出现空指针异常。

Starc_的博客 943

JAVA数组基础

初识Java数组,基础要打牢!

zhao_2907的博客 1621

Java数组详解(一)

上节我们讲到了方法的,方法在Java中也是非常重要的内容,那么这期我将为带来Java中的数组的基础和使用的内容。

2401_87022967的博客 6079
上一篇: Java基础数组详解
下一篇: 稀疏数组复习版代码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值