七、数组
1.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类型数据
*/
引用数据类型:
引用在生活中很常见,比如 文献中引用,文言文注解引用,广告角标上标引用,这些目的,引入其他的内容,其他的文献,其他的操作...
引用存在的一定的【指向性!!!】
开发中的【引用数据类型】,实际上是一个指向其他内存空间的一个数据类型。引用数据类型的变量中存储的内容是其他内存空间的【首地址】。
当CPU访问到【引用数据类型】变量时,会得到其存储的地址,然后直接跳转到对应的内存空间中,执行代码,获取数据,操作内容...
2.定义数组并使用
定义数组:
int[] array = new int[10];
需要操作数组中哪一个元素,这里需要使用数组的【下标】
计算机内数据的开头都是从0开始,数组容量为10的情况
有效下标的范围
0 ~ 9
0 ~ 数组容量 Capacity - 1
操作格式:
数组名[有效下标]
3.数组内存分析图
int[] array = new int[10];
array[0] = 10;
array[5] = 20;

4.数组循环赋值并取值
class Demo {
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]);
}
}
}
5.数组操作
5.1数组地址转移作图分析

5.2 数组作为方法的参数
class Test2 {
public static void main(String[] args) {
int[] array = {10, 8, 35, 67, 31, 25, 11, 30, 28, 99};
int find = 30;
// 调用的方法需要数组作为方法的参数,
// 这里传入【数组名】
int index = indexOf(array, find);
if (index >= 0) {
System.out.println("index : " + index);
} else {
System.out.println("Not Found!");
}
}
/**
* 在指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于0,没有找到
* 返回-1
*
* @param arr 查询数据的源数据数组,int类型数组
* @param find 指定在数组中查询的数据,也是对应int类型
* @return 找到指定元素,返回值大于等于0,否则返回-1
*/
public static int indexOf(int[] arr, int find) {
// 假设查询的数据不存在
int index = -1;
// 遍历整个数组
for (int i = 0; i < arr.length; i++) {
// 发现数组中下标为i的元素和find一致,找到内容,保存下标
if (find == arr[i]) {
index = i;
// 终止循环
break;
}
}
// 返回index中保存的数据
return index;
}
}
5.3 数组作为方法参数作图分析

5.4 总结
1. 数组作为方法参数的固定格式
(数据类型[] 数组参数名)
2. 数组作为方法的实际参数的固定格式
(数组名)
3. 数组名作为方法的参数,实际传递的是数组空间首地址,就是和数组地址转移问题是一致的
4. 方法执行需要参数,如果没有给予对应格式的实际参数,直接报错
5.5 逆序数组练习
分析过程
/*
需求:
存在一个int类型数组,使用方法逆序数组中的元素
例如:
int[] arr =
{1, 2, 3, 4, 5};
执行之后
{5, 4, 3, 2, 1};
方法分析:
访问权限:
public static
返回值类型:
void
方法名:
reverse
形式参数列表:
int[] arr 这里需要一个int类型数组
方法声明:
public staitc void reverse(int[] arr)
*/
代码
class ReverseArray {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.print("方法调用之前:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
reverse(arr);
System.out.print("方法调用之后:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
/**
* 数组逆序
*
* @param arr 需要被逆序的int类型数组
*/
public static void reverse(int[] arr) {
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
}

浙公网安备 33010602011771号