广州番禺Python, Java小班周末班培训
第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6
10.2.1 数组的length属性
Java数组的常用属性主要有length,表示数组的长度。数组的length属性保存了数组的元素数目。如果是一维数组,那么很好理解,数组中有多少个元素,length的值就为多少。例如下表所示的一维数组:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
该一维数组的length值就为9。如果是多维数组,那么length保存的仍是元素的数目,只不过这里的元素指的是数组。在7.1节中讲解过,可将多维数组理解为数组的数组,所以对于二维数组来说,length保存的是一维数组的数目,对于三维数组来说,length保存的是二维数组的数目,以此类推。举个简单的例子,在二维数组{{1,2,3},{4,5,6}}中,length的指为2。
10.2.2 数组的索引访问
访问数组中的元素值,主要通过索引来访问。Java中的索引从0开始编号,对应的是数组元素在数组中的位置。比如索引0对应的是数组中的第一个元素,索引1对应的是数组中的第二个元素,以此类推。通过索引访问数组元素的基本语法:
dataType element = array[index];
访问数组元素时通过[]来访问数组元素,[]中传递元素的索引。通过[]也可以修改对应索引元素的值,当需要对数组进行初始化时,可通过[]+索引来设置元素的值。
代码实例-读写数组:
public class HelloJava{ public static void main(String[] args) { // 定义一个长度为5的一维数组 int[] numbers = new int[5]; // 将索引0对应的元素设置为1 numbers[0] = 1; // 将索引1对应的元素设置为2 numbers[1] = 2; // 访问索引0对应的元素值 System.out.println(numbers[0]); } }
读者需注意的是,在通过索引来访问数组元素时,索引不能大于数组长度,否则Java会抛出索引越界的错误异常。Java中的索引从0开始编号,所以索引的最大值为length-1。
10.2.3 在循环中遍历数组
逐个访问数组中的元素比较麻烦,可利用循环结构和数组的length属性来遍历数组中的所有元素。
代码实例-初始化数组:
public class HelloJava{ public static void main(String[] args) { // 定义一个长度为5的一维数组 int[] numbers = new int[5]; for(int index=0; index < numbers.length; ++index) { // 将index位置的元素值设置为index numbers[index] = index; } } }
代码实例-遍历一维数组:
public class HelloJava{ public static void main(String[] args) { // 定义整型数组numbers int[] numbers = {1, 2, 3, 4, 5}; for(int index=0; index < numbers.length; ++index) { // print方法在输出的时候不会换行 System.out.print(numbers[index]); System.out.print(' '); } } }
在以上代码中用到了print方法,该方法在输出时不会换行。
代码实例-遍历二维数组:
public class HelloJava{ public static void main(String[] args) { // 定义二维整型数组numbers int[][] numbers = {{1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10}}; // 通过两层for循环来遍历二维数组中的所有元素 for(int outer_index = 0; outer_index < numbers.length; ++outer_index){ // 二维数组中的每一个元素是一个一维数组,再通过一维数组的length来得到元素的数目 for (int inner_index = 0; inner_index < numbers[outer_index].length; ++inner_index){ System.out.print(numbers[outer_index][inner_index]); System.out.print(' '); } // 执行println方法来换行 System.out.println(); } } }
在遍历二维数组时,可利用length属性来获取一维数组的长度,然后再写一层循环来遍历数组中的所有元素。
10.2.4 foreach循环结构
在使用普通的循环结构来遍历数组元素时,还是略微麻烦,需要定义一个起始索引,然后再通过[]来访问。为此,Java提供了一个很便利的foreach循环结构,用来快速访问数组中的所有元素。foreach循环结构的语法结构:
for (dataType element : array) { ; }
dataType表示元素的数据类型,element表示元素,array表示数组。
代码实例-foreach遍历一维数组:
public class HelloJava{ public static void main(String[] args) { // 定义整型数组numbers int[] numbers = {1, 2, 3, 4, 5}; for(int element: numbers){ System.out.print(element); System.out.print(' '); } } }
代码实例-foreach遍历二维数组:
public class HelloJava{ public static void main(String[] args) { // 定义二维整型数组numbers int[][] numbers = {{1,2, 3}, {4, 5, 6}, {7, 8, 9}}; for (int [] numbers_: numbers) { for (int element: numbers_) { System.out.print(element); System.out.print(' '); } System.out.println(); } }
10.2.5 内置的Arrays类
Java提供了一个Arrays类,该类位于java.utils包中,用来高效、快捷的处理数组。下表所示为Arrays类的常用方法:
方法名 | 描述 |
Arrays.toString(Object[] array) | 将数组array中的元素拼接为字符串并返回 |
Arrays.fill(Object[] array, Object val) | 将数组array全部填充为value值 |
Arrays.sort(Object[] array) | 对数组array进行排序 |
Arrays.binarySearch(Object[] array, Object key) | 使用二分查找算法在数组array中查找key值 |
Arrays.equals(Object[] array1, Object[] array2) | 判断数组array1与array2是否相等,相等返回true,否则返回false。两数组只有在元素都相同,且排列顺序一致的情况下才相等。 |
Arrays.copyOf(Object[] array, int newLength) | 构建一个新数组,并复制array中的前count个元素。 |
Arrays.copyOfRange(Object[] array, int start, int end) | 构建一个新数组,并复制array中的[start, end)范围中的元素。 |
在以上方法中,除了binarySearch,其它的方法的都很好理解。binarySearch表示二分查找,是数据结构与算法领域中的一个很经典的查找算法。在7.3节中,将重点讲解如何通过数组来实现排序和查找算法。
代码实例-填充数组并输出为字符串:
// 需先通过import指令来导入Arrays类 import java.util.Arrays; public class HelloJava{ public static void main(String[] args) { // 定义一个长度为5的一维数组 int[] numbers = new int[5]; // 通过fill方法将数组的所有元素填充为5 Arrays.fill(numbers, 5); // 通过toString方法将数组转换为字符串,方便输出 System.out.println(Arrays.toString(numbers)); } }
代码实例-截取数组并排序:
// 需先通过import指令来导入Arrays类 import java.util.Arrays; public class HelloJava{ public static void main(String[] args) { // 定义一个长度为7的一维数组 int[] numbers = {5, 2, 1, 4, 7, 9, 11}; // 通过copyOf方法来复制数组 int[] newNumbers = Arrays.copyOf(numbers, 5); // 通过sort方法来排序 Arrays.sort(newNumbers); // 通过toString方法将数组转换为字符串,方便输出 System.out.println(Arrays.toString(newNumbers)); }
10.2.6 课后习题
(1) 定义一个一维的整型数组,并将其初始化为奇数的集合
(2) 分别使用for循环和foreach循环来遍历(1)题中的数组
(3) 查找与Java随机数处理相关的资料,然后定义一个二维的整型数组,该数组中的所有元素设为随机值。
(4) 对(3)题中的二维数组进行排序,要求二维数组中的每个元素都是升序排序。
10.2.7 高薪就业班
(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取学习资料: