Java-数组2020年


一、数组的定义格式

1.什么是数组?

数组(array)是一种用于存储多个相同类型数据的存储模型。

  • 一次性声明大量的用于存储数据的变量
  • 要存储的数据通常都是同类型的数据,例如考试成绩

2.数组格式:

格式一:数据类型[ ] 变量名;

int[] arr;

定义了一个int类型的数组,数组名是arr。

格式二:数据类型 变量名[ ];

int arr[];

定义了一个int类型的变量,变量名是arr数组。

二、数组初始化

Java中的数组必须先初始化,然后才能使用。

所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。

1.动态初始化

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[ ] 变量名 = new 数据类型[数组长度];

int[] arr = new int[3];

(1)二维数组

int[][] arr = new int[2][3];

2.静态初始化

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[ ] 变量名 = new 数据类型 [ ] {数据1,数据2,数据3,……};

int[] arr = new int[]{1, 2, 3};

简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3,……};

int[] arr = {1, 2, 3};

(1)二维数组

int[][] arr = {{1, 2, 3}, {4, 5, 6, 7}, {1, 2, 3, 4, 5, 6, 7}, {1}};

3.两种输出格式的区别

  • 动态初始化:只给定数组长度,由系统分配默认初始化值
  • 静态初始化:创建数组时,直接将元素确定

三、数组元素访问

数组变量访问方式
格式:数组名

数组内部保存的数据的访问方式
格式:数组名[索引]

1.索引

索引是数组中数据的编号方式。

在这里插入图片描述

作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名。

特征:

  • 索引从0开始
  • 索引是连续的
  • 索引逐一增加,每次加1

四、内存分配

Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

  • 栈内存:方法运行时,进入的内存,局部变量都存放于这块内存当中。
  • 堆内存:new出来的内容都会进入堆内存,并且会存在地址值。
  • 方法区:字节码文件(.class文件)加载时进入的内存。
  • 本地方法栈:调用操作系统相关资源。
  • 寄存器:交给CPU去使用。
    其中,本地方法栈和寄存器我们暂不考虑。

内存中的执行流程:
在这里插入图片描述

①该类的字节码文件加载进方法区,main方法存放在字节码文件中
在这里插入图片描述

②main方法被JVM自动调用进入栈内存执行
在这里插入图片描述
③arr数组变量在main方法中声明
在这里插入图片描述
④new int[3] 通过int关键字在堆内存中开辟空间,并产生地址值,因为new的是长度为3的数组,所以会划分出3块小格子,每个格子都有自己的索引和默认初始值

在这里插入图片描述
⑤将地址值赋给main方法中的 arr变量
在这里插入图片描述
⑥后续代码执行结果
在这里插入图片描述

五、数组操作常见异常

  • ArrayIndexOutOfBoundsExceptio
    索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题。
  • NullPointerException
    空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮华′

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值