1.数组反转
规律反转
public class Array04 {
public static void main(String[] args) {
int arr[] = {11, 22, 33, 44, 55, 66};
int temp = 0;
int len = arr.length;
for (int i = 0; i < len / 2; i++) {
temp = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = arr[i];
arr[i] = temp;
}
for (int i = 0; i < 6; i++) {
System.out.println("arr = " + arr[i]);
}
}
}
逆序赋值
public class Array04 {
public static void main(String[] args) {
int arr1[] = {11, 22, 33, 44, 55, 66};
//创建一个数组arr2, 大小arr1.length
//逆序遍历arr1, 将每个变量拷贝到arr2的元素中
//增加一个循环变量j
int arr2[] = new int[arr1.length];
for (int i = arr1.length - 1, j = 0; i >= 0; i--, j++) {
arr2[j] = arr1[i];
}
arr1 = arr2;//让arr1指向arr2的数据空间, 此时arr1原来的数据空间就没有变量引用,
//会被当作垃圾销毁
for (int i = 0; i < 6; i++) {
System.out.println(arr1[i]);
}
}
}
2.数组扩容
基础:在固有数组上直接添加数据
public class Array03 {
public static void main(String[] args) {
int arr1[] = {1, 2, 3};
int arr2[] = new int[arr1.length + 1];
//遍历arr1数组,依次将arr1的元素拷贝到arr2数组
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
//把4赋给arr2最后一个元素
arr2[arr2.length - 1] = 4;
//让arr1指向arr2
arr1 = arr2;
//输出查看效果
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
}
}
进阶:能主动接受用户输入,动态调整数组大小
import java.util.Scanner;
public class Array04 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
int arr1[] = {1, 2, 3};
do {
int arr2[] = new int[arr1.length + 1];
//遍历arr1数组,依次将arr1的元素拷贝到arr2数组
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
System.out.println("请输入你要添加的元素: ");
//把addnum赋给arr2最后一个元素
int addnum = myScanner.nextInt();
arr2[arr2.length - 1] = addnum;
//让arr1指向arr2
arr1 = arr2;
//输出查看效果
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
//询问是否继续输入
System.out.println("是否继续输入(y/n)?");
String back = " ";
back = myScanner.next();
if ("y".equals(back)) {
continue;
} else {
break;
}
} while (true);
System.out.println("输入结束!");
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
}
}