Java 数组

一、概念

在 Java 中,数组是一种用于存储固定大小的同类型元素的容器。数组中的每一个元素都可以通过一个索引进行访问,索引是从 0 开始的整数。数组在内存中是连续存储的,这使得访问和操作数组元素非常高效。


二、声明数组

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

样例

int[] myArr;         // 首选方式int myArr[];         //  效果相同,但不是首选方式

注: 建议使用 int[] myArr 的声明风格声明数组变量。 int myArr[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。


三、创建数组

在Java程序中,创建数组可以分为两种方式,一种是静态初始化,另一种是动态初始化。

静态初始化:是指在创建数组的同时,明确地给出数组的元素值。这种初始化方式在编译时就能确定数组的大小和内容。

有两种书写格式,具体如下:

public class Main {
    public static void main(String[] args) {
        // 完整格式
        int[] arr1 = new int[]{1, 2, 3, 4, 5};
        // 简写格式 (推荐)
        int[] arr2 = {1, 2, 3, 4, 5};
    }
}

动态初始化:指在创建数组时,只指定数组的大小,而不立即提供元素的值。数组的元素在运行时被赋值。

public class Main {
    public static void main(String[] args) {
        // 格式
        int[] numbers = new int[5];
        numbers[0] = 1;
        numbers[1] = 2;
        numbers[2] = 3;
        numbers[3] = 4;
        numbers[4] = 5;
    }
}

一般用 for 循环来初始化。


四、数组长度

数组的长度是固定的,可以通过 length 属性获取。

样例:

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[5];
        System.out.println("数组的长度:" + arr.length);
    }
}

运行结果:

数组的长度:5

五、遍历数组

可以通过循环遍历数组中的元素,得到数组元素和下标。

有两种方式,具体如下:

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        // for 循环
        System.out.println("====== for 循环 ======");
        for (int i = 0; i < arr.length; i++) {
            System.out.println("arr[" + i + "] = " + arr[i]);
        }

        // 增强 for 循环
        System.out.println("====== 增强 for 循环 ======");
        for (int i : arr) {
            System.out.println("arr[" + i + "] = " + i);
        }
    }
}

运行结果:

====== for 循环 ======
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
====== 增强 for 循环 ======
arr[1] = 1
arr[2] = 2
arr[3] = 3
arr[4] = 4
arr[5] = 5

区别:

  1. for 循环:提供更多的控制,如访问元素索引,可用于更复杂的迭代逻辑。
  2. 增强 for 循环:代码更简洁,提高了可读性,我们只需要关系数组中的元素而不用关心下标的问题。

增强型 for 循环的设计是为了提高代码的清晰度和减少出错的可能性,尤其在处理集合和数组时。然而,它并不总是适用于所有场景,特别是当循环控制需要更精细的调整时。


六、多维数组

多维数组是数组的数组,最常见的是一维数组和二维数组。

在Java程序中,创建多维数组也可以分为两种方式,一种是静态初始化,另一种是动态初始化。

样例:

public class Main {
    public static void main(String[] args) {
        // 静态初始化
        int[][] arr1 = {
                {1,2,3},
                {4,5,6},
                {7,8,9}
        };

        // 多态初始化:2行3列,一行三个元素,一共六个元素
        int[][] arr2 = new int[2][3];
    }
}

七、常用工具

java.util.Arrays 类提供了一系列静态方法,用于操作数组,包括排序、搜索、拷贝、填充和比较等。Arrays 类的方法简化了数组的处理,使得开发者不必手动实现这些常见的数组操作。

数组打印:Arrays.toString(打印的数组)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 数组
        int[] arr = {1, 3, 2, 5, 4};

        // 打印数组
        System.out.println(Arrays.toString(arr));
    }
}

运行结果:

[1, 3, 2, 5, 4]

数组拷贝:Arrays.copyOf(被拷贝的数组,数组的长度)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 源数组
        int[] src = {1, 3, 2, 5, 4};

        // 产生的目标数组
        int[] copy = Arrays.copyOf(src, src.length);

        System.out.println(Arrays.toString(copy));
    }
}

数组排序:Arrays.sort(数组);

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 数组
        int[] arr = {1, 3, 2, 5, 4};

        // 按照升序排序
        Arrays.sort(arr);

        // 打印结果
        System.out.println(Arrays.toString(arr));
    }
}

运行结果:

[1, 2, 3, 4, 5]

数组搜索:Arrays.binarySearch(数组, 目标值)

返回的是目标值的下标,数组必须是升序的。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 数组
        int[] arr = {1, 2, 3, 4, 5};

        // 按照升序排序
        int index = Arrays.binarySearch(arr, 3);

        // 打印结果
        System.out.println(index);
    }
}

运行结果:

2

八、总结

数组是 Java 中用于存储同类型数据的重要数据结构。它们在处理大量数据时提供了快速的访问速度和简单的数据结构。

然而,数组的长度是固定的,一旦创建后无法改变,这在某些需要动态调整大小的场景下可能是个限制。在这种情况下,可以考虑使用 Java 集合框架中的 ArrayList 或其他动态数据结构。


  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野生派蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值