数组定义格式 :
-
数组概述
一次性声明大量的用于存储数据的变量,要存储的必须是相同类型的数据
-
什么是数组
数组 ( array ):用于存储多个相同类型数据的存储模型
-
数组的定义格式
-
格式一:数据类型 [] 变量名
范例: int[] arr
定义一个 int 类型的数组,数组名是 arr -
格式二:数据类型 变量名 []
范例:int arr[]
定义一个 int 类型的变量,变量名是 arr 数组
-
数组初始化之动态初始化
-
数组初始化概叙
Java 中的数组必须先初始化,然后才能使用
所谓初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋值 -
数组初始化方式
- 动态初始化
- 静态初始化
-
动态初始化
初始化时只指定数组的长度,由系统为数组分配初始值
格式 :数据类型 [ ] 变量名 = new 数据类型 [ 数组长度 ] ;
范例 :int [] arr = new int [5] ;
int[] arr = new int[5];
// int[] arr : 定义一个 int 类型的数组名称为 arr
// new int[5] : 为 int 类型长度为 5 的数组,分配内存空间
数组元素访问
-
数组元素访问
-
数组变量访问方式
格式 :数组名 -
数组内部保存的数据访问方式
格式:数组名 [索引] -
索引是数组中数据的编号方式
作用:用于访问数组中的数据使用,数组名 [索引] 等同于变量名,是一种特殊的变量名
特征:索引从 0 开始 ,连续的,逐一增加每次加一
-
-
代码测试 :
public static void main(String[] args) {
// 1. 定义数组,确定数组的长度
int[] arr = new int[5];
// 2. 输出数组地址值
System.out.println(arr);
// 3. 输出数组中的值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
内存分配
-
Java 中内存分配
Java 程序在运行时,需要在内存中分配空间,为了提高内存效率,就对空间进行了不同区域的划分,因为每一个区域都有特定的处理数据方式和内存管理方式
-
栈内存
存储局部变量,定义在方法中的变量,使用完毕立即消失
-
堆内存
存储 new 出来的内容(实体,对象)数组在初始化时,会为存储空间添加默认值
每一个 new 出来的内容都有一个地址值,使用完毕会在垃圾回收器空闲时回收 -
代码测试 :
public static void main(String[] args) {
int[] arr;
arr = new int[5];
// 1. 输出栈存储的地址值
System.out.println(arr);
// 2. 通过栈中的地址值查找到堆中对应的地址输出数组下标为 0 的数组元素
System.out.println(arr[0]);
}
数组初始化之静态初始化
-
数组初始化之静态初始化 :
静态初始化 :初始化时指定每个数组元素的初始值,由系统决定数组长度
-
格式一 :
格式 :数据类型 [] 变量名 = new 数据类型 [] { 数据一,数据二,数据三,… };
范例 :int [] arr = new int [] { 1,2,3 }; -
格式二 :
格式 :数据类型 [] 变量名 = { 数据一,数据二,数据三,… };
范例 :int [] arr = { 1,2,3 }; -
代码测试 :
public static void main(String[] args) {
// 1. 格式一
int[] arr = new int[] { 1, 2, 3 };
// 2. 格式二
int[] arr2 = new int[] { 2, 4, 6 };
// 3. 输出数组地址值与数组元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println("======================");
System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
数组常见报错
- 索引越界 :
- 空指针异常 :
- 代码测试 :
public static void main(String[] args){
// 1.索引越界 ArrayIndexOutOfBoundsException
int[] arr = new int[3];
System.out.println(arr[3]);
// 2.空指针异常 NullPointerException
arr = null;
System.out.println(arr[0]);
}
数组常用操作
- 遍历 :
public static void main(String[] args) {
// 1.普通方法进行数组遍历
int[] arr = { 11, 22, 33, 44, 55 };
for (int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
System.out.println("======================");
// 2.获取数组元素数量进行数组遍历
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
- 获取最值 :
public static void main(String[] args) {
int[] arr = { 44, 22, 11, 33, 55 };
// 1.获取最大值,临时存储,保存最大值
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
System.out.println("最大值为:" + max);
// 2.获取最小值,临时存储,保存最小值
int least = arr[0];
for (int i = 1; i < arr.length; i++) {
if (least > arr[i]) {
least = arr[i];
}
}
System.out.println("最小值为:" + least);
}