Java 从入门到精通(第4版)第6章 数组
Posted zwwhnly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 从入门到精通(第4版)第6章 数组相关的知识,希望对你有一定的参考价值。
开始讲解之前,先列出本章的提纲,如下图所示:
6.1 数组概述
数组是具有相同数据类型的一组数据的集合。
数组中的每个元素具有相同的数据类型。
可根据数组的维数将数组分为一维数组、二维数组……
6.2 一维数组的创建及使用
6.2.1 创建一维数组
1.先声明,再用new运算符进行内存分配
int arr[];
arr = new int[5];
2.声明的同时为数组分配内存
int month[] = new int[12];
说明:使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0。
6.2.2 初始化一维数组
int arr[] = new int[]{1, 2, 3, 5, 25};
int arr2[] = {34, 23, 12, 6};
6.2.3 使用一维数组
int day[] = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = 0; i < 12; i++) {
System.out.println((i + 1) + "月有" + day[i] + "天");
}
输出结果如下图所示:
6.3 二维数组的创建及使用
6.3.1 二维数组的创建
1.先声明,再用new运算符进行内存分配
int myArr[][];
myArr = new int[2][4];
int myArr[][] = new int[2][];
myArr[0] = new int[4];
myArr[1] = new int[4];
2.声明的同时为数组分配内存
int myArr[][] = new int[2][4];
6.3.2 二维数组初始化
int myArr[][] = {{12, 0}, {45, 10}};
初始化二维数组后,要明确数组的下标都是从0开始的,例如,上面的代码中myArr[1][1]的值是10,赋值语句为:myArr[1][1] = 20;
6.3.3 使用二维数组
int a[][] = new int[3][4]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.out.print(a[i][j]); } System.out.println(); }
输出结果如下图所示:
说明:对于整型二维数组,创建成功之后系统会赋给数组中每个元素初始值为0。
6.4 数组的基本操作
6.4.1 遍历数组
int b[][] = new int[][]{{1}, {2, 3}, {4, 5, 6}}; for (int k = 0; k < b.length; k++) { for (int c = 0; c < b[k].length; c++) { System.out.print(b[k][c]); } System.out.println(); }
输出结果如下图所示:
int arr[][] = {{4, 3}, {1, 2}}; System.out.println("数组中的元素是:"); int i = 0; for (int x[] : arr) { i++; int j = 0; for (int e : x) { j++; if (i == arr.length && j == x.length) { System.out.print(e); } else { System.out.print(e + "、"); } } }
输出结果如下图所示:
6.4.2 填充替换数组元素
int arr[] = new int[5]; Arrays.fill(arr, 8); for (int i = 0; i < arr.length; i++) { System.out.println("第" + i + "个元素是:" + arr[i]); }
输出结果如下图所示:
fill方法还提供了一个重载,可以指定填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括),如果fromIndex == toIndex,则填充范围为空。
int arr[] = new int[]{45, 12, 2, 10}; Arrays.fill(arr, 1, 2, 8); for (int i = 0; i < arr.length; i++) { System.out.println("第" + i + "个元素是:" + arr[i]); }
输出结果如下图所示:
注意:如果指定的索引位置大于或者等于要进行填充的数组的长度,则会报出ArrayIndexOutOfBoundsException(数组越界)异常。
6.4.3 对数组进行排序
int arr[] = new int[]{23, 42, 12, 8}; Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }
输出结果如下图所示:
6.4.4 复制数组
int arr[] = new int[]{23, 42, 12}; int newArr[] = Arrays.copyOf(arr, 5); for (int i = 0; i < newArr.length; i++) { System.out.println(newArr[i]); }
输出结果如下图所示:
int arr[] = new int[]{23, 42, 12, 84, 10}; int newArr[] = Arrays.copyOfRange(arr, 0, 3); for (int i = 0; i < newArr.length; i++) { System.out.println(newArr[i]); }
输出结果如下图所示:
6.4.5 数组查询
int arr[] = new int[]{4, 25, 10}; Arrays.sort(arr); int index = Arrays.binarySearch(arr, 0, 1, 8); System.out.println(index); // 输出-2
int arr[] = new int[]{1, 8, 9, 4, 5}; Arrays.sort(arr); int index = Arrays.binarySearch(arr, 4); System.out.println(index); // 输出1
String str[] = new String[]{"ab", "cd", "ef", "yz"}; Arrays.sort(str); int index = Arrays.binarySearch(str, 0, 2, "cd"); System.out.println(index); // 输出1
关于6.5节,数组排序的3种算法,在后续博客中分别一一讲解……
以上是关于Java 从入门到精通(第4版)第6章 数组的主要内容,如果未能解决你的问题,请参考以下文章
Java从入门到精通(第5版) 中文PPT+源码+案例+视频教程 完整版4.98GB高清下载