数组(Array)是有序的元素序列。 [ 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。
数组是用于储存多个相同类型数据的集合。
public class Test1 { public static void main(String[] args) { // 需求:数组元素求和 // 1、把这些数据拿到程序中使用数组记住 int[] money = {16, 32, 8, 100, 78}; // 3、定义一个求和变量累加数组的元素值 int sum = 0; // 2、遍历数组中的每个元素 for (int i = 0; i < money.length; i++) { // 拿到每个元素值累加 sum += money[i]; } // 4、输出求和变量即可 System.out.println("数组的元素和是:" + sum); } }
运行结果
public class Test2 { public static void main(String[] args) { // 需求:数组元素求最值。 // 1、定义一个静态初始化的数组,存储一批颜值。 int[] faceScore = {15, 9000, 10000, 20000, 9500, -5}; // 0 1 2 3 4 5 // 2、定义一个变量用于存储最大值元素,建议使用第一个元素作为参照。 int max = faceScore[0]; // 3、遍历数组的每个元素,依次与最大值变量的数据比较,若较大,则替换。 for (int i = 1; i < faceScore.length; i++) { if(faceScore[i] > max){ max = faceScore[i]; } } // 4、输出最大值变量存储的数据即可。 System.out.println("数组的最大值是:" + max); } }
运行结果
import java.util.Random; import java.util.Scanner; public class Test3 { public static void main(String[] args) { // 需求:5个 1-20之间的随机数,让用户猜测,猜中要提示猜中,还要输出该数据在数组中第一次出现的索引,并打印数组的内容出来。 // 没有猜中继续。 // 1、定义一个动态初始化的数组存储5个随机的1-20之间的数据 int[] data = new int[5]; // 2、动态的生成5个1-20之间的随机数并存入到数组中去。 Random r = new Random(); for (int i = 0; i < data.length; i++) { // i = 0 1 2 3 4 data[i] = r.nextInt(20) + 1; } // 3、使用一个死循环让用户进行猜测 Scanner sc = new Scanner(System.in); OUT: while (true) { System.out.println("请您输入一个1-20之间的整数进行猜测:"); int guessData = sc.nextInt(); // 4、遍历数组中的每个数据,看是否有数据与猜测的数据相同,相同代表猜中了,给出提示 for (int i = 0; i < data.length; i++) { if(data[i] == guessData){ System.out.println("您已经猜中了该数据,运气不错了!您猜中的数据索引是:" + i); break OUT; // 结束了整个死循环,代表游戏结束了! } } System.out.println("当前猜测的数据在数组中不存在,请重新猜测!"); } // 5、输出数组的全部元素,让用户看到自己确实是猜中了某个数据。 for (int i = 0; i < data.length; i++) { System.out.print(data[i] + "\t"); } } }
运行结果
import java.util.Random; import java.util.Scanner; public class Test4 { public static void main(String[] args) { // 目标:键盘录入一组工号,最终要随机输出一组出来作为排名 // 1、动态初始化一个数组,存储5个工号 int[] codes = new int[5]; // 2、定义一个循环,循环5次,依次录入一个工号存入对应的位置 Scanner sc = new Scanner(System.in); for (int i = 0; i < codes.length; i++) { // 正式录入工号 System.out.println("请您输入第" + (i + 1) + "个员工的工号:"); int code = sc.nextInt(); // 存入到数组中去 codes[i] = code; } // 3、遍历数组中的每个元素,然后随机一个索引出来,让该元素与随机索引位置处的元素值进行交换(本节的重点) // codes = [12, 36, 28, 45, 99] Random r = new Random(); for (int i = 0; i < codes.length; i++) { // 当前遍历的元素值:codes[i] // 随机一个索引位置出来:codes[index] int index = r.nextInt(codes.length); // 定义一个临时变量存储index位置处的值 int temp = codes[index]; codes[index] = codes[i]; codes[i] = temp; } // 4、遍历数组元素输出就是随机排名的结果 for (int i = 0; i < codes.length; i++) { System.out.print(codes[i] + "\t"); } } }
运行结果
public class Test5 { public static void main(String[] args) { // 1、定义一个数组,存储一些数据啊 int[] arr = {5, 2, 3, 1}; // 0 1 2 3 // 2、定义一个循环控制比较的轮数 for (int i = 0; i < arr.length - 1; i++) { // i == 0 比较的次数 3 j = 0 1 2 // i == 1 比较的次数 2 j = 0 1 // i == 2 比较的次数 1 j = 0 // 3、定义一个循环控制每轮比较的次数,占位 for (int j = 0; j < arr.length - i - 1; j++) { // 判断j当前位置的元素值 是否 大于后一个位置 若较大 则交换 if(arr[j] > arr[j+1]) { int temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } // 遍历数组内容输出 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "\t"); } } }
运行结果
public class Test6 { public static void main(String[] args) { // 数组(基本面试题) int[] arr1 = {10, 20, 30}; int[] arr2 = {11, 20, 30}; // 内容 个数完全一样。 if(arr1 == arr2){ System.out.println("两个数组相等!"); }else{ // 地址不同,比较内容是否相同! if(arr1.length == arr2.length){ // 编程思想:定义一个信号位,默认认为是相等的。 boolean flag = true; for (int i = 0; i < arr1.length; i++) { if(arr1[i] != arr2[i]){ System.out.println("两个数组不相等!"); flag = false; // 表示不相等了 break; } } if(flag){ System.out.println("两个数组相等!!"); } }else { System.out.println("两个数组不相等!"); } } } }
运行结果
public class Test7 { public static void main(String[] args) { // 1 1 // 2 1 // 3 2 // 4 3 // 5 5 // 6 8 // ... // ... // ... // 20 int[] numbers = new int[20]; numbers[0] = 1; numbers[1] = 1; for (int i = 2; i < numbers.length; i++) { numbers[i] = numbers[i-1] + numbers[i-2]; } for (int i = 0; i < numbers.length; i++) { System.out.println((i+1) +"月兔子数:" + numbers[i]); } } }
运行结果
public class ArrayDemo1 { public static void main(String[] args) { // 目标:学会使用静态初始化的方式定义数组 // 数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...} // double[] scores = new double[]{99.5, 88.0, 75.5}; double[] scores = {99.5, 88.0, 75.5}; // 简化写法 // int[] ages = new int[]{12, 24, 36}; int[] ages = {12, 24, 36}; // String[] names = new String[]{"牛二", "全蛋儿", "老王"}; String[] names = {"牛二", "全蛋儿", "老王"}; System.out.println(scores); } }
运行结果
public class ArrayDemo2 { public static void main(String[] args) { // 目标:学会访问数组的元素 int[] ages = {12, 24, 36}; // 0 1 2 // 取值: 数组名称[索引] System.out.println(ages[0]); System.out.println(ages[1]); System.out.println(ages[2]); // 赋值:数组名称[索引] = 数据; ages[2] = 100; System.out.println(ages[2]); // 访问数组的长度 System.out.println(ages.length); // int[] arr = {}; // System.out.println(arr.length - 1); } }
public class ArrayAttentionDemo3 { public static void main(String[] args) { // 目标:理解数组的注意事项 // 1、数据类型[] 数组名称 也可以写成 数据类型 数组名称[] int[] ages = {11, 23, 45}; // int ages1[] = {11, 23, 45}; // 2、什么类型的数组只能存放什么类型的元素 // String[] names = {"西门吹雪", "独孤求败", 23}; // 错误的 // 3、数组一旦定义出来之后,类型和长度就固定了 int[] ages2 = {11, 23, 45}; System.out.println(ages2[3]); // 报错! 长度固定是3了不能访问第4个元素!! } }
长度超过自然会报错
public class ArrayDemo4 { public static void main(String[] args) { // 目标:学会动态初始化数组的定义和使用。 double[] scores = new double[3]; // [0.0, 0.0, 0.0] // 0 1 2 // 赋值 scores[0] = 99.5; System.out.println(scores[0]); System.out.println(scores[2]); String[] names = new String[90]; names[0] = "迪丽热巴"; names[2] = "马尔扎哈"; System.out.println(names[0]); System.out.println(names[1]); System.out.println(names[2]); } }
public class ArrayDemo5 { public static void main(String[] args) { // 目标:掌握动态初始化元素默认值的规则。 // 1、整型数组的元素默认值都是0 int[] arr = new int[10]; System.out.println(arr[0]); System.out.println(arr[9]); // 2、字符数组的元素默认值是多少呢? 0 char[] chars = new char[100]; System.out.println((int)chars[0]); System.out.println((int)chars[99]); // 3、浮点型数组的元素默认值是0.0 double[] scores = new double[90]; System.out.println(scores[0]); System.out.println(scores[89]); // 4、布尔类型的数组 boolean[] booleans = new boolean[100]; System.out.println(booleans[0]); System.out.println(booleans[99]); // 5、引用类型的数组 String[] names = new String[90]; System.out.println(names[0]); System.out.println(names[89]); // int[] arrs = new int[3]{30, 40, 50}; int[] a = {1,2,3}; int[] b = {1,2,3}; System.out.println(a); System.out.println(b); } }
运行结果