1、数组的使用场景
要操作的数据,是同一组数据,就可以使用数组容器进行储存。
数组是一种数据类型,用来储存同一类型值。
虽然可以使用int装byte、short数据,但是建议创建相同数据类型的数组。
2、数组的定义格式
格式1:int[] arr;
,比较常用。
含义:定义了一个int类型的数组变量,名称叫arr,后续还需要初始化才能使用。
3、数组的初始化之动态初始化
作用:在初始化的时候,需要手动指定数组的长度,系统会为数组容器分配初始值。
动态初始化格式:
数据类型[] 数组名 = new 数据类型[数组的长度]
例如:int[] arr = new int[5]
含义:通过new关键字创建了一个int类型的数组容器,该容器可以储存5个int类型的整数,该容器在内存中的位置被arr数组变量所记录。
当打印arr变量时,打印的是内存中的地址。
4、数组元素的访问
格式:int[0]
1、索引是数组中空间的编号
- 索引从0开始
- 索引是连续的
- 索引逐一增加,每次加一
5、Java中的内存分配
- 栈内存:方法运行时,进入的内存,局部变量都会存放于这块内存当中
- 堆方法:new出来的内容都会进入堆内存,并且会存在地址值
- 方法区:字节码文件加载时进入的内存
- 本地方法栈:调用操作系统的相关资源
- 寄存器:交给CPU去使用
初始值
数据类型 | 默认值 |
---|---|
整数 | 0 |
浮点数 | 0.0 |
布尔 | false |
字符 | 空字符 |
引用数据类型 | null |
引用数据类型:引用、记录了地址值的变量,所对应的数据类型,就是引用数据类型。
多个数组:每new一次,在堆内存中,都是一块新的空间,堆内存中的空间地址不会出现重复现象。int arr2 = arr1
并不会创建新的数组,而是把arr1的地址值赋值给了arr2,此时arr1和arr2指向同一数组。
6、数组的静态初始化
格式:int[] arr = new int[]{11,22,33}
简化格式:int[] arr = {44,55,66}
静态初始化和动态初始化的区别:动态初始化适用于不知道要存储的数据,但知道具体存储数据的个数时使用。静态初始化适用于知道要存储的具体数据时使用。
7、数组操作的两个常见问题
1、索引越界:访问了数组中不存在的索引对应的元素
2、空指针异常:访问的数组已经不再指向堆内存的数据
3、null:空值,引用数据类型的默认值,表示不指向任何有效对象
8、数组的遍历
获取数组长度的方法:arr.length
数组的遍历,通过循环获取数组中的所有元素。
遍历的通用格式:
int[] arr = {......};
for (int i = 0; i < arr.length; i++){
arr[i]
}
9、数组获取最值
实现步骤:
1、假设数组中的第一个元素为最大值/最小值
2、遍历数组。获取每一个元素,准备进行比较
3、如果比较的过程中,出现了比max更大的,让max记录更大值(比min更小的,让min记录更小值)
4、循环结束后打印输出
public class maxOrMin {
public static void main(String[] args) {
int[] arr = {11, 21, 21, 22, 154, 4156};
//第一步
int max = arr[0];
int min = arr[0];
//第二步
for (int i = 1; i < arr.length; i++){
//第三步
if (arr[i]>max){
max = arr[i];
}
if (arr[i] < min){
min = arr[i];
}
}
//第四步
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
10、键盘输入数据,进行数组求和
import java.util.Scanner;
public class sum {
public static void main(String[] args) {
//1、创建输入对象
Scanner sc = new Scanner(System.in);
//2、创建动态初始化数组
int[] arr = new int[5];
//3、创建整型变量储存求和值
int sum = 0;
//4、输入5个值赋值给数组
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i+1) + "个值");
arr[i] = sc.nextInt();
}
//5、进行求和
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
//6、输出结果
System.out.println("sum:" + sum);
}
}
11、查找
import java.util.Scanner;
public class lookFor {
public static void main(String[] args) {
//1、创建输入对象
Scanner sc = new Scanner(System.in);
//2、创建索引值并赋值为-1,默认在数组中找不到元素
int index = -1;
//3、创建静态初始化数组
int[] arr = {11, 22, 255, 123, 156, 14563};
//4、获取要查找的数据
System.out.println("请输入要查找的数据:");
int num = sc.nextInt();
//5、在数组中查找
for (int i = 0; i < arr.length; i++) {
if (num == arr[i]){
index = i;
break;
}
}
//6、打印输出索引值
System.out.println(index);
}
}