一维数组和应用
发布日期:2021-05-10 03:44:07 浏览次数:27 分类:精选文章

本文共 2039 字,大约阅读时间需要 6 分钟。

Java 数组基础

数组在编程中是一个非常基础的数据结构。它通过在内存中划分一块连续的空间来存储同一类型的数据。与单独的变量不同,数组可以通过索引来访问其元素,这使得它在处理大量数据时特别有用。

数组的基本要素

数组由以下几个要素组成:

  • 标识符:用于命名数组,例如 int[] a 中的 a
  • 元素:数组中存储的值,类型与数组长度一致。
  • 下标:用于访问数组中特定位置的元素。Java数组的下标从0开始。
  • 元素类型:数组中元素的类型决定了其存储方式。例如,整型数组存储的是整数值,字符串数组存储字符串。
  • 需要注意的是,数组的长度在声明时无法动态调整,因此在获取数组元素时必须确保下标不超出范围。


    数组的使用步骤

    单独声明并分配空间

    int[] a; // 声明数组
    a = new int[3]; // 分配大小为3的整型数组
    // 或者:
    int[] a = new int[3]; // 一次性完成声明和分配

    在没有显式声明大小的情况下,Java会自动初始化为0,但必须手动指定大小。创建数组时,Java会在内存中为数组分配一块连续的区域,并初始化为零值。

    边声明边赋值

    或许更简便的方法是不显式声明数组。例如:

    int[] scores = {89, 79, 76}; // 边声明边赋值
    int[] scores = new int[] {89, 79, 76}; // 或者用new创建后直接赋值

    这种方法省去了显式的new语句,但在语法上与传统方式一致。

    避免数组越界

    数组越界是数组操作中最常见的错误之一。稍微超出数组下标的范围,程序就会抛出ArrayIndexOutOfBoundsException。因此,在访问数组元素时,必须确保索引值在合理范围内。


    数组操作

    输出数组中的元素

    int[] a = new int[30];
    for (int i = 0; i < a.length; i++) {
    System.out.println("索引:" + i + ", 值:" + a[i]);
    }

    求和

    int sum = 0;
    for (int i = 0; i < a.length; i++) {
    sum += a[i];
    }

    使用增强for循环(for each)

    for (int num : a) {
    sum += num;
    }

    这种方式简化了元素遍历的代码,让您只关注数组的元素本身。

    求最大值

    int max = a[0];
    for (int i = 1; i < a.length; i++) {
    if (a[i] > max) {
    max = a[i];
    }
    }

    插入数值

    插入元素时通常需要扩容数组:

    int[] b = Arrays.copyOf(a, a.length + 1);
    for (int i = 0; i < a.length; i++) {
    b[i] = a[i];
    }
    // 或者直接复制数组
    int[] b = Arrays.copyOf(a, a.length + 1);

    或者直接使用更简洁的方式:

    int[] b = Arrays.copyOf(a, a.length + 1);

    数组排序

    选择排序示例

    int[] a = new int[10];
    for (int i = 0; i < a.length; i++) {
    a[i] = (int) Math.random() * 100;
    }
    System.out.println("原始数组:" + Arrays.toString(a));
    // 开始排序
    for (int i = 0; i < a.length - 1; i++) {
    int temp = a[i];
    int p = i;
    for (int j = i + 1; j < a.length; j++) {
    if (temp > a[j]) {
    temp = a[j];
    p = j;
    }
    }
    if (p != i) { // 只有当找到更小的元素时才交换
    a[p] = a[i];
    a[i] = temp;
    }
    }
    System.out.println("排序后数组:" + Arrays.toString(a));

    使用已有的排序方法

    如果想保留简洁的代码,可以直接使用Arrays.sort方法:

    import java.util.Arrays; // 必须导入Arrays类
    ...
    Arrays.sort(a);
    System.out.println("使用Arrays.sort排序后的数组:" + Arrays.toString(a));
    上一篇:冒泡排序和二维数组
    下一篇:多重循环

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月25日 17时29分55秒