Java(七)
数组操作
遍历数组
1.数组的遍历可以使用for循环来实现;
使用for循环遍历时,定义int i=0,因为索引是从0 开始的,继续循环的条件是 i<array.length,因为当i=array.length时,i的索引超出了范围。
2.数组的循环还可以使用for each 直接迭代数组的每个元素;
在for(int n : array)中,变量n是直接获取到array的元素,并不是索引。
直接打印数组变量,得到的是数组在JVM中的地址;
打印数组时用Arrays.toString()
public class Test { public static void main(String[] args){ int[] array = {1,3,45,22,89}; System.out.println(Arrays.toString(array)); } }
练习:请按倒叙遍历数组,并打印
public class Test { public static void main(String[] args){ int[] arr = {1,3,45,22,89}; for (int i = arr.length-1; i>=0; i--){ System.out.println(arr[i]); } } }
数组排序
java内置了数组的排序功能,Arrays.sort()
public class Test { public static void main(String[] args){ int[] arr = {1,3,45,22,89,0,77,90}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); } }
//对数组进行降序排序
public class Test { public static void main(String[] args){ int[] arr = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 }; //排序前: // System.out.println(Arrays.toString(arr)); //排序后 for (int i = 0; i < arr.length - 1; i ++){ for (int j = 0; j < arr.length-i-1; j ++){ if (arr[j] < arr[j+1]){ int tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; } } } System.out.println(Arrays.toString(arr)); if (Arrays.toString(arr).equals("[96, 89, 73, 65, 50, 36, 28, 18, 12, 8]")){ System.out.println("测试成功"); }else { System.out.println("测试失败"); } } }
常用的算法排序有:冒泡排序、插入排序、快速排序等
冒泡排序使用两层for循环实现排序;
交换两个变量的值需要借助一个临时变量;
对数组排序会直接修改数组本身;
可以直接使用java标准库提供的Arrays.aort()对数组进行排序;
多维数组
二维数组
二维数组就是数组的数组
定义一个二维数组:int[][] ns = {
{1,2,3,4};
{5,6,7,8,9};
{10,11,12,13,14,15}
};
访问二维数组中的某个元素:ns[row][col];
要打印一个二维数组,可以用for双层循环,也可以用Java标准库提供的Arrays.deepToString();
public class Test { public static void main(String[] args){ int[][] arr = { {1,2,3}, {4,5,6,7}, {8,9,10,11,12} }; System.out.println(arr.length);//输出二维数组的长度 //for 循环打印二维数组 for (int[] n : arr ) { for (int nn : n ) { System.out.println(nn); } } //Arrays.deepToDtring()输出二维数组 System.out.println(Arrays.deepToString(arr)); } }
三维数组
三维数组就是二维数组的数组
eg:
int[][][] arr = { { {1,2,3}, {4,5,6,7}, {8,9,10,11,12} }, { {13,14}, {15,16} }, { {17,18}, {19,20} } };
访问三维数组中的某个元素:arr[0][1][1]
练习:使用二维数组可以表示一组学生的成绩,请计算所有学生的平均分
public class Test { public static void main(String[] args){ // 用二维数组表示的学生成绩: int[][] scores = { { 82, 90, 91 }, { 68, 72, 64 }, { 95, 91, 89 }, { 67, 52, 60 }, { 79, 81, 85 }, }; double sum = 0; int num = 0; for (int[] arr : scores ) { for (int a : arr ) { sum = sum + a; num ++; } } double average = sum/num; System.out.printf("average:%.3f",average); if (Math.abs(average - 77.733333) < 0.000001){ System.out.println("测试成功"); }else{ System.out.println("测试失败"); } } }
备注:
二维数组就是数组的数组,三维数组就是二维数组的数组;
多维数组的每个数组的数组元素长度都不相同;
打印多维数组可以使用Arrays.deepTotring();
最常见的多维数组是二维数组,访问二维数组的一个元素用array[row][col]。
命令行参数
命令行参数类型是String[] 数组;
命令行参数,由jvm接收用户输入,并传给main方法;
如何解析命令行参数,由程序自己实现。