java数组操作

1、遍历数组

1)遍历

我们在Java程序基础里介绍了数组这种数据类型。有了数组,我们还需要来操作它。而数组最常见的一个操作就是遍历。

通过for循环就可以遍历数组。因为数组的每个元素都可以通过索引来访问,因此,使用标准的for循环可以完成一个数组的遍历:

在这里插入图片描述
在这里插入图片描述

2)打印数组内容

在这里插入图片描述
直接打印数组变量,得到的是数组在JVM中的引用地址:

int[] ns = { 1, 1, 2, 3, 5, 8 };
System.out.println(ns); // 类似 [I@7852e922

使用for each循环打印也很麻烦。幸好Java标准库提供了Arrays.toString(),可以快速打印数组内容
在这里插入图片描述
Arrays.toString()

3) 小结

  • 遍历数组可以使用for循环,for循环可以访问数组索引,for each循环直接迭代每个数组元素,但无法获取索引;

  • 使用Arrays.toString()可以快速获取数组内容

2、数组排序

对数组进行排序是程序中非常基本的需求。常用的排序算法有冒泡排序、插入排序和快速排序等。

1)冒泡排序

我们来看一下如何使用冒泡排序算法对一个整型数组从小到大进行排序:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
        // 排序前:
        System.out.println(Arrays.toString(ns));
        for (int i = 0; i < ns.length - 1; i++) {
            for (int j = 0; j < ns.length - i - 1; j++) {
                if (ns[j] > ns[j+1]) {
                    // 交换ns[j]和ns[j+1]:
                    int tmp = ns[j];
                    ns[j] = ns[j+1];
                    ns[j+1] = tmp;
                }
            }
        }
        // 排序后:
        System.out.println(Arrays.toString(ns));
    }
}

冒泡排序的特点是,每一轮循环后,最大的一个数被交换到末尾,因此,下一轮循环就可以“刨除”最后的数,每一轮循环都比上一轮循环的结束位置靠前一位。

实际上,Java的标准库已经内置了排序功能,我们只需要调用JDK提供的Arrays.sort()就可以排序
在这里插入图片描述
必须注意,对数组排序实际上修改了数组本身。例如,排序前的数组是:

在这里插入图片描述
在这里插入图片描述
对数组排序实际上修改了数组本身

2) 小结

  • 常用的排序算法有冒泡排序、插入排序和快速排序等;

  • 冒泡排序使用两层for循环实现排序;

  • 交换两个变量的值需要借助一个临时变量。

  • 可以直接使用Java标准库提供的Arrays.sort()进行排序

  • 对数组排序会直接修改数组本身

3、多维数组

1)二维数组

二维数组就是数组的数组。
在这里插入图片描述
因为ns包含3个数组,因此,ns.length为3。实际上ns在内存中的结构如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二维数组的每个数组元素的长度并不要求相同,例如,可以这么定义ns数组:

在这里插入图片描述
在这里插入图片描述
或者使用Java标准库的Arrays.deepToString()
在这里插入图片描述

2)三维数组

三维数组就是二维数组的数组。
在这里插入图片描述

在这里插入图片描述

3) 小结

  • 二维数组就是数组的数组,三维数组就是二维数组的数组;

  • 多维数组的每个数组元素长度都不要求相同;

  • 打印多维数组可以使用Arrays.deepToString()

  • 最常见的多维数组是二维数组,访问二维数组的一个元素使用array[row][col]。

4、命令行参数

Java程序的入口是main方法,而main方法可以接受一个命令行参数,它是一个String[]数组

这个命令行参数由JVM接收用户输入并传给main方法

在这里插入图片描述

在这里插入图片描述

小结

  • 命令行参数类型是String[]数组;

  • 命令行参数由JVM接收用户输入并传给main方法;

  • 如何解析命令行参数需要由程序自己实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值