数组操作
for循环给数组赋值时,注意
i < arr.length
i = arr.length时超出了数组最大长度
min的定义和使用要注意在同一个作用域
- 数组作为方法参数的固定格式
(数据类型[] 数组参数名) - 数组作为方法的实际参数的固定格式
(数组名) - 数组名作为方法的参数,实际传递的是数组空间首地址,就是和数组地址转移问题是一致的
- 方法执行需要参数,如果没有给予对应格式的实际参数,直接报错
练习
a. 在一个int类型数组中,存储的内容是1 ~ 10
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
使用代码找出,元素 == 5 所在下标位置
找出元素5对应的下标位置
1. 这里需要利用循环遍历数组,查询操作
2. 查询结果不确定,有可能找到,有可能找不到
3. 在查询之前我们假设对应的数据时不存在的
-1 作为保存目标数据的初始值
class HomeWork1 {
public static void main(String[] args) {
/*
静态创建数组
数组的数据类型存储为int类型
数组名为arr,数组中的元素是大括号中的内容
大括号中每一个元素使用逗号隔开
*/
int[] arr = {12, 32, 23, 14, 75, 16, 67, 89, 19, 110};
// index是保存找到元素的下标位置,-1是非法下标
int index = -1;
// arr.length是获取数组的容量属性 Capacity
for (int i = 0; i < arr.length; i++) {
// 遍历数组,找到指定下标i元素值为5
if (75 == arr[i]) {
// 保存下标i数据到index中
index = i;
// 已经找到数据,循环终止!!!
break;
}
}
// 展示index保存的数据,如果index的值还是-1,告知未找到
if (index != -1) { // index > -1
System.out.println("index : " + index);
} else {
System.out.println("Not Found 未找到!!!");
}
}
}
/*
c. 在一个int类型数组中,存储的内容是
int[] arr = {11, 31, 15, 27, 49, 52, 34, 96, 18, 10};
使用代码找出数组中最大元素所在下标位置
如何查找最大值???
1. 假设下标为0的元素是最大值
2. 遍历整个数组,两两比较
3. 如果发现有数据大于我们假设数据,保存较大值
*/
class HomeWork3 {
public static void main(String[] args) {
// 假设下标为0的元素是最大值
int maxIndex = 0;
int[] arr = {11, 31, 15, 27, 49, 52, 34, 96, 18, 10};
// 遍历操作过程中循环变量i 从1开始,提高效率
for (int i = 1; i < arr.length; i++) {
/*
max是假设的最大值下标位置,如果发现下标为max的元素
小于下标为i的元素,max保存i的值,i值是一个下标数据
*/
if (arr[maxIndex] < arr[i]) {
maxIndex = i;
}
}
System.out.println("最大值下标位置:" + maxIndex);
System.out.println("最大值:" + arr[maxIndex]);
}
}
/*
d. 在一个int类型数组中,存储的内容是
int[] arr = {11, 31, 15, 27, 49, 52, 34, 96, 18, 10};
使用代码找出数组中最小元素所在下标位置
*/
class HomeWork4 {
public static void main(String[] args) {
// 假设下标为0 的元素是最小值
int minIndex = 0;
int[] arr = {11, 31, 15, 27, 49, 52, 34, 96, 18, 10};
for (int i = 1; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) {
minIndex = i;
}
}
System.out.println("最小值下标位置:" + minIndex);
System.out.println("最小值:" + arr[minIndex]);
}
}
class Demo9 {
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;
}
}
}