java数据结构之数组系统了解

1.数组介绍

数组就是一个存储数据的容器,容器的长度固定、存储元素的数据类型固定。  

跟变量加以区分:变量也可以存储数据,但是只能存一个值。当要存的数据比较多的时候,用变量就不方便了。我们就可以使用数组来存储。

1.1数组的定义格式
1.1.1第一种格式

数据类型[] 数组名

示例:

数据类型【】 变量名 = 初始化值;
int[] arr;    
sout(arr)
double[] arr;      
char[] arr;
1.1.2第二种格式

​ 数据类型 数组名[]

​ 示例:

int arr[];
double arr[];
char arr[];

 我们通常采用第一种格式来定义数组。

1.2 数组的动态初始化

数组动态初始化就是只给定数组的长度,由系统给出默认初始化值。

数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
动态初始化格式详解
  • 等号左边:

    • int:数组的数据类型

    • []:代表这是一个数组

    • arr:代表数组的名称

  • 等号右边:

    • new:为数组开辟内存空间

    • int:数组的数据类型

    • []:代表这是一个数组

    • 3:代表数组的长度

public class Demo2Array {/*数组的动态初始化:在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值.
​动态初始化格式:数据类型[] 数组名 = new 数据类型[数组的长度];
​注意:打印数组变量的时候, 会打印出数组的内存地址
​[I@10f87f48 :
​@ : 分隔符[ : 当前的空间是一个数组类型I : 当前数组容器中所存储的数据类型10f87f48 : 十六进制内存地址
​0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 a b c d e f*/public static void main(String[] args) {// 数据类型[] 数组名 = new 数据类型[数组的长度];// 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录int[] arr = new int[5];// [I@10f87f48System.out.println(arr);
​byte[] bArr = new byte[3];// [B@b4c966aSystem.out.println(bArr);
​}
}
​
数组元素访问

索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。这个自动编号称为数组索引(index),也叫做下标。可以通过数组的索引访问到数组中的元素。

数组的索引范围:[0 , 数组.length-1]

数组元素访问格式:

获取值:

数据类型 变量名 = 数组名[索引];

sout(数组名[索引]);

赋值:

数组名[索引] = 变量;//表示把变量中的值,赋值给数组中对应的索引上。

数组名[索引] = 数据值;//表示把数据,赋值给数组中对应的索引上。

public class Demo3ArrayIndex {    /*        数组动态初始化:                初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值.        数组的元素访问格式:                数组名[索引]                索引: 数组中数据的编号方式, 编号从0开始                作用: 访问数组容器中的空间位置        注意:                数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值.     */    public static void main(String[] args) {        int[] arr = new int[3];         // 0 1 2        System.out.println(arr);        // 数组的内存地址  [I@10f87f48        // 数组名[索引]  访问数组容器中的空间位置        System.out.println(arr[0]);     // 0  系统自动分配的默认初始化值        System.out.println(arr[1]);        System.out.println(arr[2]);        System.out.println("--------------");        // 数组名[索引]        arr[0] = 11;        arr[1] = 22;        arr[2] = 33;        System.out.println(arr[0]);        System.out.println(arr[1]);        System.out.println(arr[2]);    }}

Java中的内存分配

一个数组内存图

两个数组内存图

多个数组指向相同空间内存图

数组的静态初始化

在创建数组时,直接将元素确定,自动计算出数组长度。

public class Demo1Array {/*数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度
​完整格式:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};简化格式:数据类型[] 数组名 = {数据1,数据2,数据3...};*/public static void main(String[] args) {// 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};int[] arr = new int[]{11,22,33};System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);
​// 数据类型[] 数组名 = {数据1,数据2,数据3...};int[] arr2 = {44,55,66};System.out.println(arr2);System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);
​}
}

数组操作的两个常见问题

引越界异常
public class ArrayDemo {public static void main(String[] args) {
​        int[] arr = new int[3];System.out.println(arr[3]);}
}
数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。
程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。
空指针异常
public class ArrayDemo {public static void main(String[] args) {//1.创建了一个数组//arr记录一个地址值int[] arr = new int[3];
​//把null赋值给数组//修改了arr记录的地址值。表示arr不指向任何一个空间。arr = null;//通过arr获取数组里面的元素System.out.println(arr[0]);}
}
arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,
也就不允许再操作数组了,因此运行的时候会抛出 
NullPointerException 空指针异常。

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

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

相关文章

并发编程实现

一、并行编程 1、Parallel 类 Parallel类是System.Threading.Tasks命名空间中的一个重要类,它提供数据并行和任务并行的高级抽象。 For和ForEach Parallel类下的For和ForEach对应着普通的循环和遍历(普通的for和foreach),但执行时会尝试在多个线程上…

搜维尔科技:工作场所人体工程学分析-最大限度地提高员工生产力

工作场所人体工程学分析-最大限度地提高员工生产力 - 增强工作场所安全和生产力:了解人体工程学评估在改善工作场所安全和提高企业生产力方面的关键作用 搜维尔科技:工作场所人体工程学分析-最大限度地提高员工生产力

maya可视化blendshape

目录 maya读取csv,驱动头模表情变化 python操作示例 读取csv设置表情动画 maya 中文版怎么可视化blendshape 1. 创建Blend Shapes 2. 使用混合形状编辑器 3. 微调Blend Shapes 4. 高级可视化和调试 maya 英文版可视化blendshape 1. 创建Blend Shapes 2. …

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期,全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示,据文化和旅游部数据中心测算,全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%,而酒店作为一个高…

SpringCloudAlibaba:4.3云原生网关higress的JWT 认证

概述 简介 JWT是一种用于双方之间传递安全信息的简洁的、URL安全的声明规范。 定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息,特别适用于分布式站点的单点登录(SSO)场景 session认证的缺点 1.安…

怎么理解Mybatis的事务

对于数据库事务,我们都不陌生,数据库的事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,也是一个不可分割的工作单位。它包含一个或多个SQL语句,这些语句要么全部执行,要么全部不执…

精准数据清理:掌握 MongoDB 删除集合的方法与最佳实践

在 MongoDB 数据库管理中,数据清理是确保数据库性能和数据一致性的不可或缺的一环。而删除集合作为实现数据清理的关键步骤之一,其重要性不言而喻。然而,正确地执行集合删除操作需要谨慎对待,因为一旦删除,数据将永久丢…

简单数据结构——栈和队列1(栈超全)(初始化,销毁,出栈入栈销毁实现,例题运用)

知识特点 类似数据表链表,在逻辑上依次存储,但对比顺序表和链表有所限制,不能随便存储 一定要先掌握顺序表的实现,本人博客有顺序表专栏大家可以自行查看,看懂顺序表专栏之后再来了解栈的实现会更容易懂。 如果还没…

使用DBeaver连接postgreSql提示缺少驱动

重新安装电脑之后用dbeaver链接数据库的时候,链接PG库一直提示缺少驱动,当选择下载驱动的时候又非常非常慢经常失败,尝试了一下更改源然后下载库驱动就非常快了,当然也包括dbeaver的自动更新。 方法:点击菜单栏【窗口…

闲来装个虚拟机Ubuntu24.04和硬盘分区及挂载

简述 最近ubuntu出新版本了,ubuntu24.04, 俗称高贵食蚁兽。5年前进行Android或者linux开发基本是在windows下的虚拟机中进行。目前,虽然物质基础提高了,功能有独立进行编译、代码管理的服务器了。可以通过ssh登录,但是…

Seata之AT 模式的使用

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Seata 是一款开源的…

ChIP-seq染色质图谱检测方法的局限性及改善方式

ChIP-seq是最广泛使用的染色质图谱检测方法,但有很大的局限性,具体表现为: 1.高细胞需求量; 2.低吞吐量; 3.技术困难; 4.高成本,深度测序; 5.数据质量差,变量大 CUT&…

使用CNN或resnet,分别在flower5,flower17,flower102数据集上实现花朵识别分类-附源码-免费

前言 使用cnn和resnet实现了对flower5,flower17,flower102数据集上实现花朵识别分类。也就是6份代码,全部在Gitee仓库里,记得点个start支持谢谢。 本文给出flower17在cnn网络实现,flower102在resnet网络实现的代码。…

docker私有仓库的registry

简介 Docker私有仓库的Registry是一个服务,主要用于存储、管理和分发Docker镜像。具体来说,Registry的功能包括: 存储镜像:Registry提供一个集中的地方来存储Docker镜像,包括镜像的层次结构和元数据。 版本控制&…

基于HSI模型的水下图像增强算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

如何在Linux上设置IP

设置动态IP 在Linux上配置动态IP地址,通常是通过DHCP(动态主机配置协议)来实现的。以下是配置动态IP地址的一般步骤: 确认网卡名称: 使用ifconfig或ip addr命令来查看当前系统中的网卡名称。网卡名称通常是以eth、enp…

【数据结构】-- 链表专题

链表的分类 前面我们实现了单链表,单链表只是链表的一种。可以根据以下几个标准来判断链表的类型: 1.单向或者双向 如图所示,单向链表中一个节点的指针域只储存了下一个节点的指针,能通过前一个节点访问后一个节点,无…

【4089】基于小程序实现的互动打卡系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

双网口扩展IO支持8DO输出

M320E以太网远程I/O数据采集模块是一款工业级、隔离设计、高可靠性、高稳定性和高精度数据采集模块,嵌入式32位高性能微处理器MCU,集成2路工业10/100M自适应以太网模块里面。提供多种I/O,支持标准Modbus TCP,可集成到SCADA、OPC服…

怎么写毕业论文的? 推荐4个AI工具

写作这件事一直让我们从小学时期就开始头痛,初高中时期800字的作文让我们焦头烂额,一篇作文里用尽了口水话,拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业,结果毕业前的最后一道坎拦住我们的是毕业论文,这玩意不…