08-java基础语法(数组)

数组

1、数组
1.1多数据存储的需求
需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。
那么数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话:
数组是存储多个变量(元素)的容器
这多个变量的数据类型要一致

1.2数组定义格式
格式一:
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
格式二:
数据类型[] 数组名 = {元素值1,元素值2,元素值3,…};
示例:
格式一:
int[] arr = new int[5];
格式二:
int[] arr = {20,5,100,30,5}
2.数组元素的访问
数组元素的访问 指的是对数组元素的赋值和取值
格式一:
int[] arr = new int[3];
格式二:
int[] brr = {20,5,100,30,5}
无论是取值还是赋值都需要进行数组元素的访问
访问格式:
数组名[索引]
数组中的每个元素都是有编号的这个编号就叫索引,也称作角标或者下标,编号是从0开始的,最大的编号就是数组的 长度-1
比如想给arr数组的第一个元素赋值一个数字100 , 可以使用 arr[0] = 100;
想打印brr数组的第一个元素 可以使用 System.out.println(brr[0]);
示例:
如果数组名称为arr,索引为0,1,2
获取数组中元素的格式:
arr[0]获取数组中的第一个元素
arr[1]获取数组中的第二个元素
arr[2]获取数组中的第三个元素
每一个对象内的数据都有默认值
byte,short,int,long 0
float,double 0.0
char ‘\u0000’,一个空格
boolean false
引用类型:null
3.数组内存图与数据存储原理
3.1Java中的内存分配
Java 程序在运行时,需要在内存中的分配空间。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 存储局部变量
局部变量是定义在方法中或者语句中的变量
局部变量使用完毕,立即回收
堆 存储new出来的东西
每一个对象都有首地址值,是一个十六进制的地址
每一个对象内的数据都有默认值
byte,short,int,long 0
float,double 0.0
char ‘\u0000’,一个空格
boolean false
引用类型:null
使用完毕后,会被垃圾回收器空闲的时候回收。
其他区域
方法区 (存放字节码文件,常量等)
本地方法区(系统使用)
寄存器(给CPU使用)
数组的内存示意图
在这里插入图片描述
定义一个数组,输出数组名及元素。然后给数组中的元素赋值,再次输出数组名及元素
在这里插入图片描述
3.2数组遍历
遍历数组是最常见的操作,即依次访问数组中每个元素。使用数组名.length可以获取数组长度,配合循环可以完成遍历动作。
遍历数组代码如下:

int[] arr = {213,4,2,6,10,8};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
3.3数组操作的两个问题
在使用数组时,因为不当的操作,我们可能会通过编译,但是在运行期间遇到一些程序报错,称为运行时错误。
数组最常见的两个运行时错误:空指针异常和数组索引越界异常
3.3.1空指针异常
编程语言中对空的处理与我们平常所理解的略有不同。这里我们区分两种空的不同
变量完全没有值:
定义了变量根本没有值:int a; int[] b
这样根本没有赋值过的变量是无法使用的。数组也是一种数据类型,可以指定变量,没有赋值是不能使用的。

变量有值,但值为null:
定义了变量并且赋值了,但是值是空值(空值也是一个数值)。这种情况只针对于引用数据类型,基本数据类型不成立。
int a = null; 编译失败
int[] arr = null; 正常赋值

当使用int[] arr = null给arr赋值时,变量arr作为数组名通过编号访问数组元素时编译不报错,运行时报运行错误NullPointerException空指针异常,因为没有new数组对象的过程,即堆内存中没有数组。
3.3.2数组索引越界异常
当数组中不存在该索引却访问该索引时,运行时报错:
ArrayIndexOutOfBoundsException 数组索引越界

发布了186 篇原创文章 · 获赞 379 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/104577211