上篇回顾

上篇的内容不知道小伙伴们学习的怎样,我这里出几个问题帮助下大家巩固一下,大家看看能不能直接回答出来。

  1. 循环结构有哪三种?有什么区别?
  2. break和continue的使用场景和作用?

学习目标

1. 数组

内容

1.1. 数组的作用和特点

作用数组可用于存储同一类型的多个数据,是一个Java的数据容器

特点数组长度固定,存储数据类型一致

1.2. 数组的格式

// 格式一(常用):数据类型[] 数组名称
int[] arr;
String[] arr;
Object[] arr;

// 格式二(该写法由C转Java的程序员使用的比较多):数据类型 数组名称[]
int arr[];
String arr[];
Object arr[];

1.3. 数组的动态初始化

什么是数组初始化?

  • java中变量使用前必须完成初始化,数组也一样,需要完成初始化才能使用。

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

  • 数组的初始化分为动态初始化和静态初始化。

什么是动态初始化?

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

动态初始化的格式是?

// 数组类型[] 数组名称 = new 数组类型[数组长度];
int[] arr = new int[3]; // 定义一个长度为 3 的 int 类型数组

格式说明:

  • 等号左边
    • int:数组的数据类型
    • []:表示这是一个数组
    • arr:数组的名称
  • 等号右边
    • new:为数组开辟内存空间
    • int:数组的数据类型
    • []:表示这是一个数组
    • 3:数组的长度

1.4. 数组元素访问

数组变量存储的是什么?

  • 数组在内存中的地址值

什么是索引?

  • 数组索引:数组元素的编号,从0开始,最大值为数组长度-1。

  • 可以通过索引操作数组元素。

数组元素访问的格式?

// 数组名称[索引值]
int[] arr = new int[3];

//输出数组名,得到一个地址值
System.out.println(arr);  //[I@880ec60

//输出数组中的元素,默认值0
System.out.println(arr[0]); // 首个元素对应索引值为 0
System.out.println(arr[1]);
System.out.println(arr[2]);

1.5. 数组的静态初始化

什么是静态初始化?

  • 在创建数组时,直接确定元素的值。

数组静态初始化的格式

// 数据类型[]  数组名  =  new  数据类型[]{元素1, 元素2, 元素3...}
int[] arr = new int[]{1,2,3};

// 简化格式:数据类型[]  数组名  = {元素1, 元素2, 元素3...}
int[] arr = {1,2,3};

数组的动态初始化和静态初始化的区别:

  • 动态初始化:只给定数组长度,由系统分配默认初始化值。
int[] arr = new int[3];
  • 静态初始化:创建数组时,直接完成元素的赋值。
int[] arr = new int[]{1,2,3};
int[] arr = {1,2,3};

1.6. 数组操作的常见问题

数组索引越界异常:ArrayIndexOutOfBoundsException

  • 产生原因:访问到了数组中不存在的索引。

  • 如何避免:在索引范围内访问数组元素。

int[] arr = {10,20,30};

// 下面代码会运行报错,因为arr索引范围为0~2,-1和3都不在范围内
System.out.println(arr[-1]); 
System.out.println(arr[3]); 

JAVA基础系列 - 第5篇: 数组_java

空指针异常:NullPointerException

  • 产生原因:数组地址为null,此时操作数组元素就会报空指针异常。

  • 注意:一旦出现空指针异常,要在代码中进行修改或进行非空判断,避免空指针异常产生。

// 这种原因大多是由于方法返回值为 null 导致
int[] arr = method();
System.out.println(arr[0]);

JAVA基础系列 - 第5篇: 数组_java_02

1.7. 数组的遍历

如何获取数组长度?

  • 数组名.length

如何遍历数组?

int[] arr = {10,20,30};

// 普通for循环
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

// 增强 for
for (int i : arr) {
    System.out.println(i);
}

// stream 流
Arrays.stream(arr).forEach(System.out::println);

JAVA基础系列 - 第5篇: 数组_java_03

总结

今天讲解的是数组的概述与基本使用,后面我们还会讲解到集合,这两者在项目中的使用频率还是很高的,小伙伴们一定要学好哦!