【JAVA |数组】数组定义与使用、常见的Arrays类介绍

目录

一、前言

二、数组的创建和初始化

三、数组的使用 

四、数组是引用类型

1.JVM的内存分配

 2.与引用类型变量

 3.null

五、二维数组

六、Java中Arrays类的常用方法

1. Arrays.fill ->填充数组

2. Arrays.sort ->数组排序

3. Arrays.toString ->数组打印

4. Arrays.equals ->比较数组是否相等

5. Arrays.binarySearch ->二分查找法找指定元素的索引值(下标)

6.Arrays.copeOf ->复制代码


一、前言

内存在连续存储的一段空间,相同类型数据的集合


二、数组的创建和初始化

在C语言中数组的创建格式为int arr[ ],但是在JAVA中数组的创建格式为int[ ] arr

创建数组有这几种方法

  • arr1创建并对其数组进行初始化,指定数组中的元素,前面的方括号空着,JAVA会根据数组中的值自动分配空间
  • arr2是创建一个可以容纳10个int类型元素的数组 
  • arr1和arr3是等价的,可以省略了nrw int[ ]

如果没有对数组进行初始化,数组中元素有其默认值

如果数组中存储元素类型为引用类型,默认值为null


三、数组的使用 

数组在内存中是一段连续的空间,空间的编号都是从 0 开始的,依次递增,该编号称为数组的下标,数组可以通过 下标访问其任意位置的元素
下标从 0 开始,介于 [0, N )之间不包含 N N 为元素个数,不能越界,否则会报出下标越界异常。

在打印数组的时候,在JAVA相比于C语言可以这样实现

在数组中可以通过 数组对象.length 来获取数组的长度 

也可以使用 for-each 遍历数组,和上述方法实现的结果一样的

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


四、数组是引用类型

1.JVM的内存分配

在JAVA中,JVM 也对所使用的内存按照功能的不同进行了划分

  • 程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址
  • 虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含 有:局部变量表操作数栈动态链接返回地址以及其他的一些信息,保存的都是与方法执行时相关的一 些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了
  • 本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的
  • (Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2, 3} )堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销
  • 方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数 . 方法编译出的的字节码就是保存在这个区域

 2.与引用类型变量

大家来看下面这段代码

a b 是内置类型的变量,其空间中保存的就是给该变量初始化的值;array是数组类型的引用变量

,相当于C语言中的指针用来接受数组的首地址。

引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该
地址,引用变量便可以去操作对象。

 3.null

null Java 中表示 " 空引用 " , 也就是一个不指向对象的引用 . 类似于 C 语言中的 NULL ( 空指针 ), 都是表示一个无效的内存位置 . 因此不能对这个内存进行任何读写操作. 一旦尝试读写 , 就会抛出 NullPointerException.

五、二维数组

二维数组本质上也就是一维数组 , 只不过每个元素又是一个一维数组,基本语法如下
数据类型 [][] 数组名称 = new 数据类型 [ 行数 ][ 列数 ] { 初始化数据 }

 以上3种方法都是正确的在JAVA中二维数组的行不能省略列可以省略并且在给一个二维数组初始化的时候每一行都要拿花括号围起来(每一行都是一个一维数组),这与C语言中还是有差异的

  • arr1中创建了一个3行的二维数组(3个一维数组所组成的数组)
  • arr2中创建了一个3行的二维数组,每行的大小可以是不一样的
  • arr3中初始化并创建了一个3行的二维数组,每行的大小是不一样的

二维数组的用法和一维数组并没有明显差别


六、Java中Arrays类的常用方法

Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。使用前得包含它的util包

    import java.util.Arrays;

1. Arrays.fill ->填充数组

既能实现对不同数据类型数组进行全部分配,也能实现范围分配

 以int类型举例子


2. Arrays.sort ->数组排序

既能实现对不同数据类型数组进行全部排序,也能实现范围排序

 以int类型举例子 

 


3. Arrays.toString ->数组打印

打印出来数组的内容

 以int类型举例子 

 


4. Arrays.equals ->比较数组是否相等

比较两个数组是否元素相同,并返回对应的布尔值

  以int类型举例子 


5. Arrays.binarySearch ->二分查找法找指定元素的索引值(下标)

二分查找使用前需要排序,既能实现对不同数据类型数组进行全部查找,也能实现范围查找

  以int类型举例子 

6.Arrays.copeOf ->复制代码

既能实现对不同数据类型数组进行全部复制,也能实现范围复制,同时可以扩容!!

   以int类型举例子 


希望对你有帮助

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

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

相关文章

美易官方:美国经济已现裂痕?美联储再不降息,崩溃即将到来!

美国经济,一度被誉为全球最强大的经济体,如今似乎已显露出脆弱的迹象。华尔街的分析师们纷纷发出警告,呼吁美联储尽快降息,否则一场经济崩溃可能即将来临。 自美联储大幅加息以来,经济学家们一直警告称,高利…

那个在买珠宝的年轻人

金价搭上过山车,今年以来价格一路飙涨。 珍珠身价同步飙升,晋级珠宝圈“新宠”。 文玩圈“减龄”,盘珠串不再只是“老头乐”。 月薪3000的年轻人,悄悄实现“宝石”自由。 黄金珠宝走俏,这届年轻人到底有着怎样的珠宝…

开抖音小店需要交多少保证金?全类目选择,一篇了解

哈喽~我是电商月月 做抖音小店前大家都会搜索“入驻抖音小店需要准备什么东西?”其中就包含了一项:类目保证金的缴纳 那到底要交多少钱?很多新手朋友还是不太了解 今天我就给大家解答这个问题,首先,我们要知道抖店的…

2024年5月软考,别再傻傻啃书了!

备考2024年软考,不听课也不刷题,只是看教材的话,想要考试通过,几乎是不可能的,特别是基础比较薄弱的考生。 为什么只看教材通不过? 如果只是把教材从头到尾看一遍,毫无目的地看书,…

FPGA学习笔记(1)——Vivado和HLS

1 Vivado设计 1.1 FPGA基本知识 Xilinx Atrix-7使用6输入LUT结构(0-63)CLB:可配置逻辑块Slice:每个CLB包含2个Slice(包含查找表LUT和8位寄存器REG)布线池:围绕在CLB周围,衔接FPGA的资源调度I/O块&#xf…

test我说话撒机房环境

testhfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.ztesthfsjafjdsbzvbcxn.z

启动配置 BOOT

在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。 STM32微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。 根据选定的启动模式,主闪存存储器、系统存储器或SRAM可…

基于 docker-compose 部署 LNMP 架构

目录 前言 1、任务要求 2、Nginx 2.1 建立工作目录并上传相关安装包 2.2 编写 Nginx Dockerfile 脚本 2.3 准备 nginx.conf 配置文件 3、Mysql 3.1 建立工作目录并上传相关安装包 3.2 编写 Mysql Dockerfile 脚本 3.3 编写 my.cnf 配置文件 4、PHP 4.1 建立工作目录…

系统图表:洞察数据的价值与魅力

在数字化、信息化迅猛发展的今天,数据已经成为企业决策、科学研究、社会管理等领域的核心资源。而如何高效、准确地理解和利用这些数据,成为摆在我们面前的重要课题。系统图表作为数据可视化的重要呈现工具,不仅能帮助我们洞察数据的内在规律…

【Python】字典题

题目:输入一段文本,统计每个字符的个数 in_inputinput(“输入:”) dic{} for char in in_input: if char in dic: dic[char]1 # 字典添加键值对的方法,给字典给键和值的方法 else: dic[char]1 print(dic) for key,value in dic.i…

计算机体系结构:6、指令流水线

6.指令流水线 6.1 流水线概述 6.1.1 流水线的执行效率 ​ 一条指令的执行过程可被分为若干阶段,每个阶段由相应的功能部件完成。一般而言,一条指令的流水线由如下5个流水段组成: 取指令(IF):从存储器取指令指令译码(ID):产生指令执行所需…

电脑连接公司打印机教程

第一步:连接上公司Wifi 第二步:打开设置 第三步:安装打印机驱动程序 3.1 查看打印机型号 打印机上面有个贴纸,上面就写有哦 3.2 进入该网页 打印机驱动,打印机驱动下载 - 打印机驱动网 (dyjqd.com) 下滑点击这里下载&#xff0…

CSS定位(如果想知道CSS有关定位的知识点,那么只看这一篇就足够了!)

前言:在网页布局的时候,我们需要将想要的元素放到指定的位置上,这个时候我们就可以使用CSS中的定位操作。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下本篇文章的大致内容&…

文件一键删除:高效清理电脑空间,批量删除重复文件的步骤与技巧

在数字化时代,我们的电脑中储存了大量的文件,从文档、图片到视频、音频等,各类文件混杂在一起。随着时间的推移,电脑中的文件数量不断增长,重复文件也随之增多,占用了宝贵的硬盘空间。为了高效清理电脑空间…

dvwa靶场Weak Session IDs(弱会话IDs)全难度教程(附代码分析)

Weak Session&#xff08;Security Level: low&#xff09; 漏洞利用 第一次cookie 回包后变成2了 多回几次之后发现是递增关系 那么构造一下payload就可以进行登入 代码分析 <?php$html "";if ($_SERVER[REQUEST_METHOD] "POST") {if (!isset ($…

3D模型素材有哪些常见的用途?

3D模型素材已经成为了设计、游戏开发、电影制作和建筑等领域的重要工具。它们以其独特的形式和丰富的细节&#xff0c;为这些领域的专业人士提供了无尽的创作可能性。 1.建筑和室内设计&#xff1a;在建筑设计中&#xff0c;3D模型可以帮助建筑师更直观地展示设计方案&#xff…

[YOLOv8] 用YOLOv8实现指针式圆形仪表智能读数(一)

最近研究了一个项目&#xff0c;利用python代码实现指针式圆形仪表的自动读数&#xff0c;并将读数结果进行输出&#xff0c;若需要完整数据集和源代码可以私信。 目录 &#x1f353;&#x1f353;1.yolov8实现圆盘形仪表智能读数 &#x1f64b;&#x1f64b;2.仪表目标检测…

ES6-自学01

调用方法读取文件&#xff1a;如果失败就throw抛出err,成功则抛出data 2.使用promise封装&#xff0c;如果失败就改变状态为 reject(err) 如果成功就 resolve(返回成功的值) &#xff0c;然后then,就可以获取返回的值&#xff0c;值toString&#xff08;&#xff09;方法来把…

填报表如何实现电话号码的校验

单元格校验时&#xff0c;只能输入数字和特定字符&#xff08;-&#xff09;&#xff0c;即实现固话和手机号码的校验&#xff0c;保证录入的规范&#xff0c;应如何实现&#xff1f; 解决方案&#xff1a;使用正则表达式实现校验效果&#xff0c;如下图所示&#xff1a; 校验…

Milvus向量数据库(一)Milvus存储byte[]类型源向量数据

两种路线&#xff1a; 第一种是把byte[]转换为List< float >&#xff0c;然后存储到Milvus的floatVector中第二种是把byte[]转换为ByteBuffer&#xff0c;然后存储到Milvus的BinaryVector中 步骤&#xff1a; 我先用的是第一种&#xff0c;但是在转换float过程中&…