Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第十章: Java数组与数据结构 > 10.2节: 数组的常用操作

10.2节: 数组的常用操作

薯条老师 2021-12-17 12:42:38 178413 0

编辑 收藏

广州番禺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 高薪就业班



欢迎 发表评论: