数组来由
录入30个学生的成绩cj01 ... cj30。成本非常高,因为你使用了30个变量。维护起来非常麻烦 使用数组,只需要使用一个变量来维护它了
数组的使用
public class Demo01 { public static void main(String[] args) { // java Demo01 zs ls ww // 声明一个数组,指明了里面只能存放 整数 int arr[]; // 赋值 arr = new int[5]; // 给数组里面的5个成员,都分别给个成绩 // arr[0] arr[1] arr[2] arr[3] arr[4] arr[0] = 60; arr[1] = 61; arr[2] = 62; arr[3] = 63; arr[4] = 64; // 使用 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); } }
数组的内存图
变量声明和args参数说明
声明分配空间值的省略写法
public class Demo02 { public static void main(String[] args) { // 声明 分配空间 赋值 int[] arr = new int[]{81,82,83,84,85}; int[] arr2 = {81,82,83,84,85}; // 如果 声明 分配空间 赋值 是在一行,省略new int[] System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); } }
数组的length属性
public class Demo03 { public static void main(String[] args) { System.out.println(args.length); // 0 // java的数组,天然有一个只读属性,它的名字叫length int[] arr = {81,82,83,84,85,86,87,88}; System.out.println(arr.length); System.out.println("数组里面的信息:"); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
数列输出求和判断
import java.util.Scanner; public class Demo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] arr = {8, 4, 2, 1, 23, 344, 12}; int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; // 累计 System.out.println(arr[i]); // 输出 } System.out.println("和:" + sum); System.out.print("输入一个数:"); int number = scanner.nextInt(); boolean bFound = false; for (int i = 0; i < arr.length; i++) { if (number == arr[i]) { bFound = true; break; } } System.out.println(bFound ? "找到" : "没有找到"); // 唯一的三元操作符 } }
购物金额结算
import java.util.Scanner; public class Demo05 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double[] arrJingE = new double[5]; for (int i = 0; i < arrJingE.length; i++) { System.out.print("请输入第"+(i+1)+"笔的金额:"); arrJingE[i] = scanner.nextDouble(); } System.out.println("序号\t金额"); double sum = 0.0; for (int i = 0; i < arrJingE.length; i++) { System.out.println((i+1) + "\t" + arrJingE[i]); sum += arrJingE[i]; } System.out.println("总金额\t" + sum); } }
Arrays的sort和toString方法
import java.util.Arrays; public class Demo06 { public static void main(String[] args) { int[] arr = {8, 4, 2, 1, 23, 344, 12}; // for (int i = 0; i < arr.length; i++) { // System.out.println(arr[i]); // } Arrays.sort(arr); // 排序 System.out.println(arr); // 打印数组名时,输出的是 [代表数组 I代表整数 @8位十六进制代表内存地址 System.out.println(Arrays.toString(arr)); } }
Arrays的equals和fill和copyOf和binarySearch方法
import java.util.Arrays; /* boolean equals(array1,array2) 比较array1和array2两个数组是否相等 void fill(array,val) 把数组array所有元素都赋值为val copyOf(array,length) 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 int binarySearch(array, val) 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) */ public class Demo07 { public static void main(String[] args) { int[] arr1 = new int[]{8, 4, 2, 1, 23, 344, 12}; int[] arr2 = new int[]{8, 4, 2, 1, 23, 344, 12}; System.out.println(Arrays.equals(arr1, arr2)); Arrays.fill(arr1, 11); System.out.println(Arrays.toString(arr1)); int[] arr3 = Arrays.copyOf(arr2, 8); System.out.println(Arrays.toString(arr3)); Arrays.sort(arr2); // [1, 2, 4, 8, 12, 23, 344] System.out.println(Arrays.toString(arr2)); int pos = Arrays.binarySearch(arr2, 0); // 没有找到,返回插入点的下标取负数再-1 System.out.println("pos: " + pos); } }
字符数组顺序和逆序输出
import java.util.Arrays; public class Demo08 { public static void main(String[] args) { char[] arr = {'a', 'c', 'u', 'b', 'e', 'p', 'f', 'z'}; System.out.print("原字符序列:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } Arrays.sort(arr); System.out.println(); System.out.print("升续排序后:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); System.out.print("逆序输出后:"); for (int i = arr.length - 1; i >= 0; i--) { System.out.print(arr[i] + " "); } } }