1.初识数组

1.1 生活中的数组

超市
商品货物的存放,是不是分门别类???
分门别类有什么好处???
便于管理,便于查找
理念 【归纳总结】

图书馆:
1. 社科类,文学类,管理类,小说类,历史类,语言类
2. 相同的书籍会存放于一个书架上 【同一个位置】
3. 每一本书都要有一个唯一的编号 【同样的称呼】 W-101
4. 同一本有10本,都会有一个唯一的索引
W-101-01 ~ W-101-10 【唯一索引】

通过图书馆我们可以概括
1. 存储位置一致,并且连续
2. 有统一的称呼,方便管理
3. 存在唯一索引,具有一定的唯一性

1.2 开发中的实际情况

开发中一定存在对于大量相同数据处理的过程!!!

如果按照单一变量的定义方式,会导致
1. 代码冗余!!!
2. 代码维护性极差!!!
3. 代码可操作性极差!!!
4. 代码阅读性极差!!!

这里可以模仿生活中的案例,图书馆,超市,把这些同一个数据类型的数据,存放在一起,方便管理和使用
引入数组使用的场景和概念!!!
1.3 java中创建数组的方式

案例
int[] array = new int[10];
/*
赋值号左侧:
int:
告知编译器,这里创建定义的是一个int类型数组,有且只能保存int类型数据,保
证数据类型一致化
[]:
1. 告知编译器,当前定义的数据类型是一个数组类型
2. 数组名 array是一个【引用数据类型】
array:
1. 这里是一个数组名,操作数组的核心数据!!!就是一个变量名
2. 数组名 array是一个【引用数据类型】

赋值号右侧:
new:
new关键字需要在计算机中申请【连续内存空间】,这块区域在内存的【堆区】
【生活案例】这里就好比,顾客找仓库管理员申请货架,管理员一定是给你一个整
个连续区域给你使用
int:
前后呼应,告知编译器这里能够存储的数据类型是int类型,其他类型都不可以,要
求数据类型一致化
[10]:
告知编译器,当前数组的【容量 Capacity】是多少,这里是10,也就是说当前数
组中有且只能保存10个int类型数据
*/

1.4 引用数据类型

引用在生活中很常见,比如 文献中引用,文言文注解引用,广告角标上标引用,这些目的,引入其他的内容,其他的文献,其他的操作…
引用存在的一定的【指向性!!!】

取快递
快递小哥如何知道你的地址在哪里???
根据快递单上的地址,联系方式和姓名来找到你的位置。
快递单这里也存在一定的【指向性!!!】

快递单中存有一个非常重要的数据【地址】!!!

开发中的【引用数据类型】,实际上是一个指向其他内存空间的一个数据类型。引用数据类型的变量中存储的内容是其他内存空间的【首地址】。
当CPU访问到【引用数据类型】变量时,会得到其存储的地址,然后直接跳转到对应的内存空间中,执行代码,获取数据,操作内容...
1.5 定义数组和使用

定义数组:
int[] array = new int[10];

需要操作数组中哪一个元素,这里需要使用数组的【下标】
计算机内数据的开头都是从0开始,数组容量为10的情况
有效下标的范围
0 ~ 9
0 ~ 数组容量 Capacity - 1

操作格式:
数组名[有效下标]

示例
/* 演示数组的定义和使用 */
class Demo2 {
	public static void main(String[] args) {
		/* 这里定义一个int类型的数组,数组的容量为10 */
		int[] array = new int[10];
		
		/*
		给数组中下标为0的元素赋值
		格式: 数组名[有效下标]
		*/
		array[0] = 10;
		
		/*
		给数组中下标为5的元素赋值
		*/
		array[5] = 20;
		
		/*
		给数组下标为10的元素赋值30
		10 已经超出了有效下标范围 0 ~ 9
		
		array[10] = 30;
		*/
		/*
		Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
			at Demo2.main(Demo2.java:22)	
		ArrayIndexOutOfBoundsException	数组下标越界异常
		*/
		
		/*
		给数组中下标为-1的元素赋值为20
		-1 已经超出了有效下标范围 0 ~ 9
		*/
		// array[-1] = 20;
		/*
		java.lang.ArrayIndexOutOfBoundsException: -1
		*/
		
		/*
		取出数组中下标为0和下标为5的元素内容
		*/
		System.out.println("array[0] : " + array[0]);
		System.out.println("array[5] : " + array[5]);
		// System.out.println("array[4] : " + array[4]);
		
	}
}
1.6 数组内存分析图

java如何将数组保存到本地文档中 java使用数组保存书,cd,磁带_赋值

1.7 数组与for循环之间的关系
示例
class Demo3 {
	public static void main(String[] args) {
		/* 定义一个int类型数组 容量为10 */
		int[] arr = new int[10];
		
		/*
		数组名.length 
			获取当前数组的【容量 Capacity】,获取数组的【属性】
		*/
		for (int i = 0; i < arr.length; i++) {
			// 给数组中每一个元素赋值操作 
			arr[i] = i + 1;
		}
		
        // 利用循环展示数据
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}