当前位置: 首页 > news >正文

【JavaSE】数组的打印,拷贝以及元素的查找

目录

一.数组的打印

1.1. 使用for循环

1.2. 使用 for-each

1.3. 使用 Arrays.toString

二.数组的拷贝

2.1 实现自己版本的拷贝

2.2 使用Aarrays.copyof工具

Aarrays.copyof(arr,n)

​编辑

Arrays.copyofRange( arr,x , y )

三.数组元素的查找

3.1 对无序数组元素的查找

3.2 对有序数组元素的查找

3.2.1 二分查找

3.2.2 使用Arrays.binarySearch( arrary , n )


一.数组的打印

1.1. 使用for循环

在使用for循环时,我们需要获得数组元素的个数---array.length

int[] array = new int[]{10, 20, 30, 40, 50}; for(int i = 0; i < array.length; i++){ System.out.println(array[i]); }

1.2. 使用 for-each

int[] array = {1, 2, 3}; for (int x : array) { System.out.println(x); }

for-each 是for循环的另外一种使用方法。能够更方便的完成对数组的遍历。可以避免循环条件和更新语句写错。

注释:for-each 这个循环可以遍历整个数组,并取得数组的每个元素放在变量x当中。

注意:在for-each这个循环中改变x的值并不会改变数组元素的值

1.3. 使用 Arrays.toString

注意:

  • 使用 Arrays.toString 时需要导入util 包(import java.util.Arrays)
  • 注意 Arrays.toString 的返回值是String 类型的
  • Arrays.toString 实际上是把数组转化为字符串进行输出

二.数组的拷贝

在编程中,数组的拷贝是指创建一个与原数组内容相同的新数组。有不同方式,比如浅拷贝和深拷贝。

2.1 实现自己版本的拷贝

public static int[] copyOf(int[] arr) { int[] ret = new int[arr.length]; for (int i = 0; i < arr.length; i++) { ret[i] = arr[i]; } return ret; }

2.2 使用Aarrays.copyof工具

  • Aarrays.copyof(arr,n)

newArr = Arrays.copyOf(arr, arr.length); System.out.println("newArr = " + newArr); sc.close();

注意:

  1. arr:被拷贝的数组
  2. n: 拷贝的长度(n的大小可以大于数组的长度,即可以扩容)
  3. Aarrays.copyof 的拷贝是从arr[0]开始的
  • Arrays.copyofRange( arr,x , y )

int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);

注意:

  1. Arrays.copyofRange 是拷贝某个范围
  2. x :开始拷贝的坐标
  3. y : 结束拷贝的坐标
  4. 拷贝范围:[arr[x] , arr[y]左闭右开

数组当中存储的是基本类型数据时,不论怎么拷贝基本都不会出现什么问题,但如果存储的是 引用数据类型,拷贝时需要考虑深浅拷贝的问题,关于深浅拷贝在后续详细给大家介绍。

三.数组元素的查找

3.1 对无序数组元素的查找

给定一个数组,再给定一个元素,找打给元素再数组中的坐标

public static void main(String[] args) { int[] arr = {1,2,3,10,5,6}; System.out.println(find(arr, 10)); } public static int find(int[] arr, int data) { for (int i = 0; i < arr.length; i++) { if (arr[i] == data) { return i; } } return -1; // 表示没有找到 } // 执行结果:3

3.2 对有序数组元素的查找

3.2.1 二分查找

针对有序数组,可以使用更高效的二分查找

以升序数组为例,二分查找的思路是先取中间位置的元素,然后使用2待查找元素与数组中间元素进行比较:

• 如果相等,即找到了返回该元素在数组中的下标

• 如果小于,以类似方式到数组左半侧查找

• 如果大于,以类似方式到数组右半侧查找

public static void main(String[] args) { int[] arr = {1,2,3,4,5,6}; System.out.println(binarySearch(arr, 6)); } public static int binarySearch(int[] arr, int toFind) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = (left + right) / 2; if (toFind < arr[mid]) { // 去左侧区间找 right = mid - 1; } else if (toFind > arr[mid]) { // 去右侧区间找 left = mid + 1; } else { // 相等,说明找到了 return mid; } } // 循环结束,说明没找到 return -1; } // 执行结果:5

3.2.2 使用Arrays.binarySearch( arrary , n )

注意:

  • Arrays.binarySearch 的返回值是所查找元素的坐标
  • Arrays.binarySearch 适用的数组必须是有序数组
  • 如果不是有序数组可用 Arrays.sort()进行排序后再使用
http://www.jsqmd.com/news/596283/

相关文章:

  • 3步精通DownKyi:B站视频下载与处理的完整高效方案
  • 新手必看:.NetReactor加密实战指南(附授权文件生成技巧)
  • 告别坚果云容量焦虑:手把手教你用阿里云盘+Alist搭建Zotero免费同步库(安卓/iOS通用)
  • 铝镁锰屋面板哪个公司好
  • Phi-4-mini-reasoning轻量化部署展示:低资源消耗下的多任务处理能力
  • 技术解析:ncmdump如何破解网易云音乐NCM格式加密机制
  • Phi-3-vision-128k-instruct赋能软件测试:自动化生成测试用例与验证报告
  • 二轮做好题目DAY3
  • ShardingSphere-JDBC连接关闭?根源分析与实战优化全攻略
  • 如何为 AI Agent Harness Engineering 设计有效的工具 (Tools) 和函数 (Functions)
  • 163MusicLyrics:免费歌词下载与格式转换工具终极指南
  • 3分钟快速上手:Windows电脑安装安卓APK的完整指南
  • VoiceFixer语音修复神器:3分钟让嘈杂录音变清晰的完整指南
  • 【重点】【DP】300.最长递增子序列
  • 深度解析Godot PCK资源提取:二进制格式逆向与内存映射技术实现
  • Z-Image-Turbo-辉夜巫女保姆级教程:从部署到出图,小白也能轻松玩转
  • Java 反射(Reflection)
  • JavaScript变量声明终极指南:undefined与not defined的区别解析
  • OpenClaw浏览器自动化:Qwen3-14B实现智能网页数据采集
  • DJL与AWS AI服务集成:构建云端智能应用生态系统完整指南
  • AI率80%和40%降到20%,难度差了多少? - 我要发一区
  • 天津恒诚泰农业设施有限公司联系方式查询:关于获取官方联系渠道与农业设施采购的通用建议 - 品牌推荐
  • 【技术拆解】DCVC-RT:如何用五大创新让神经视频编码跑进实时时代?
  • 大学生HTML期末大作业——HTML+CSS+JavaScript王者荣耀
  • PP-DocLayoutV3入门教程:5分钟快速部署,合同论文版面分析实战
  • 购物卡闲置别浪费,天猫超市卡回收攻略! - 团团收购物卡回收
  • 动态规划实战:从硬币找零到最优解算法设计
  • 终极指南:5分钟掌握Awoo Installer,轻松搞定Switch游戏安装
  • PyTorch 2.8镜像多场景案例:短视频生成、数字人驱动、3D动画渲染预处理
  • 告别拼接URL!手把手教你封装HarmonyOS的POST请求工具类