Java 数组

本文详细介绍了Java中的一维和二维数组声明、初始化、访问方法,包括长度获取、作为方法参数传递和接收,以及数组拷贝和注意事项。特别强调了数组引用的特点,即方法内对数组的修改会影响原始数组。
摘要由CSDN通过智能技术生成

目录

引言

数组

一维数组

声明和初始化:

访问:

长度:

作为方法传递参数:

作为方法接收参数:

二维数组

声明和初始化:

访问:

长度:

作为方法传递参数:

作为方法接收参数:

数组的拷贝:

注意事项:

修改原始数组:


引言

相较于C语言,Java数组只是声明方式不同,以及多了一些属性,最常用的就是length属性,其他方面基本一样

数组

一维数组

声明和初始化

  • 声明数组时,需要指定数组的类型和数组名,如 int[] numbers;String[] names;
  • 初始化数组时,可以通过 new 关键字来创建数组对象,并指定数组的大小,如 numbers = new int[5];。也可以同时声明并初始化数组(动态声明),如 int[] numbers = new int[5];。也可以静态声明数组int[] numbers = {1,2,3,4,5};
        int[] numbers = new int[5];
        int[] numbers = {1,2,3,4,5};

访问

  • 数组的元素通过索引访问,索引从 0 开始计数。例如,numbers[0] 表示数组 numbers 的第一个元素。(这个与C语言一样)

长度

  • 使用数组的 length 属性可以获取数组的长度,即数组中元素的个数。例如,int size = numbers.length;

作为方法传递参数

  • 直接使用processArray(arr);
  • 如果想直接传递一个静态数组,只能使用processArray(new int[] {1,2,3,4,5});

作为方法接收参数

  • 直接使用processArray(int[] arr) { ... }

二维数组

声明和初始化

  • 声明二维数组时,需要指定数组的类型和数组名,如 int[][] matrix; 或 String[][] grid;。 初始化二维数组时,可以通过 new 关键字来创建数组对象,并指定数组的行数和列数,如 matrix = new int[3][3];。也可以同时声明并初始化二维数组,如 int[][] matrix = new int[3][3];。 静态初始化二维数组时,需要在大括号中为每一行提供初始值,如 int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};。
int[][] matrix = new int[3][3]; 
int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};

访问

  • 二维数组的元素通过行索引和列索引访问,例如 matrix[0][0] 表示二维数组 matrix 的第一行第一列的元素。(与C语言一样

长度

  • 对于二维数组,length 属性只返回第一维的长度,即行数。要获取第二维的长度,需要访问每个数组元素的 length 属性。
int row = matrix.length;    //数组行数
int col = matrix[0].length; //数组列数

作为方法传递参数

  • 直接使用 processArray(arr);。
  • 如果想直接传递一个静态二维数组,只能使用 processArray(new int[][] {{1,2,3},{4,5,6},{7,8,9}});。

作为方法接收参数

  • 直接使用 processArray(int[][] arr) { ... }。

数组的拷贝

  • Java 提供了 System.arraycopy() 方法和 Arrays.copyOf() 方法来进行数组的拷贝操作,可以复制数组的部分或全部内容到新的数组中。

使用 System.arraycopy() 方法:

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

        // 使用 System.arraycopy() 方法将 sourceArray 的内容复制到 destinationArray
        System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length);

        // 输出结果
        System.out.println("Destination array after copying:");
        for (int num : destinationArray) {
            System.out.print(num + " ");
        }
    }
}

使用 Arrays.copyOf() 方法:

import java.util.Arrays;

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

        // 使用 Arrays.copyOf() 方法复制整个数组
        int[] destinationArray1 = Arrays.copyOf(sourceArray, sourceArray.length);

        // 使用 Arrays.copyOf() 方法复制部分数组(前三个元素)
        int[] destinationArray2 = Arrays.copyOf(sourceArray, 3);

        // 输出结果
        System.out.println("Destination array 1 after copying:");
        for (int num : destinationArray1) {
            System.out.print(num + " ");
        }
        System.out.println("\nDestination array 2 after copying:");
        for (int num : destinationArray2) {
            System.out.print(num + " ");
        }
    }
}

注意事项

  • 数组在声明后必须初始化才能使用,否则会抛出 NullPointerException 异常。
  • 数组的大小是固定的,一旦创建后就不能改变,如果需要动态调整大小,可以使用 ArrayList 类。

修改原始数组

  • 由于传递的是数组的引用(就看作指针),因此在方法内部对数组的修改会影响到原始数组。例如,如果在方法内部修改了数组的元素值,这些修改也会反映在原始数组上。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Soul&Spark

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

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

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

打赏作者

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

抵扣说明:

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

余额充值