Java基础篇--数组

目录

声明和初始化数组:

访问和修改数组元素:

数组长度:

遍历数组:

多维数组的遍历:

数组的常见操作和方法:

Arrays.fill()方法详解

拓展小知识:


数组是Java中的一种数据结构,用于存储相同类型的多个元素。它提供了一个连续的内存块来存储数据,并可以通过索引访问和操作数组中的元素。

声明和初始化数组:

  • 数组声明:在声明数组时,需要指定数组的数据类型和名称。例如,int[] myArray; 声明了一个名为 myArray 的整型数组。
  • 数组初始化:通过使用关键字 new 创建数组对象,并指定数组的长度或直接提供元素的初始值来初始化数组。
    • 通过指定长度初始化数组:myArray = new int[5]; 使用 new 关键字创建一个包含5个整数元素的整型数组。
    • 直接提供元素的初始值初始化数组:int[] myArray = {1, 2, 3, 4, 5}; 定义并初始化了一个包含元素 1、2、3、4 和 5 的整型数组。
int[] myArray;  // 声明一个整型数组变量
myArray = new int[5];  // 创建一个包含5个整数元素的数组

int[] myArray = {1, 2, 3, 4, 5};  // 声明并初始化一个整型数组

// 多维数组
int[][] myArray = new int[3][4];  // 声明一个3行4列的二维数组

访问和修改数组元素:

  • 数组的索引从0开始,即第一个元素的索引是0。要访问和修改数组中的元素,可以使用方括号 [] 并提供相应的索引。
    • 获取数组中的元素值:int value = myArray[0]; 获取索引为0的元素值并赋给变量 value
    • 修改数组中的元素值:myArray[1] = 10; 将索引为1的元素值设置为10。
int value = myArray[0];  // 获取数组中索引为0的元素值

myArray[1] = 10;  // 修改数组中索引为1的元素值

数组长度:

  • 通过使用数组的 length 属性,可以获取数组的长度。例如,int length = myArray.length; 获取数组 myArray 的长度,并将其赋给变量 length。
int length = myArray.length;  // 获取数组的长度

遍历数组:

  • 可以使用循环结构(例如 for 循环)来遍历数组中的元素并进行处理。
  • 使用下标循环遍历:通过控制索引的范围,从0开始逐个访问数组中的元素并进行操作。
for (int i = 0; i < myArray.length; i++) {
    System.out.println(myArray[i]);
}
  • 使用 for-each 循环遍历:使用 for-each 循环语法可以简化数组的遍历操作。它会依次遍历数组中的每个元素,而不需要显式地使用索引。
for (int num : myArray) {
    System.out.println(num);
}

多维数组的遍历:

多维数组是由数组组成的数组。可以使用嵌套的循环结构来遍历多维数组中的元素。

int[][] myArray = new int[3][4];  // 一个3行4列的二维数组

for (int i = 0; i < myArray.length; i++) {
    for (int j = 0; j < myArray[i].length; j++) {
        System.out.println(myArray[i][j]);
    }
}

数组的常见操作和方法:

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

以下是对 java.util.Arrays 类提供的常用方法的简要介绍:

  1. fill 方法:用指定的值填充整个数组。
  2. sort 方法:按升序对数组进行排序。
  3. equals 方法:比较两个数组中的元素值是否相等。
  4. binarySearch 方法:在已排序的数组中使用二分查找法查找指定元素。

Arrays.fill()方法详解

在Java API中的public static void fill(Object[] a,int fromIndex,int toIndex,Object val)将指定的Object引用分配给指定Object数组指定范围中的每个元素,填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括),如果fromIndex==toIndex,则填充范围为空。

参数说明
a要填充的数组
fromIndex要使用指定值填充的第一个元素的索引(包括)
toIndex要使用指定值填充的最后一个元素的索引(不包括)
val要存储在数组的所有元素中的值

具体方法如下:

方法描述
fill(boolean[] a,boolean val)将指定的布尔值分配给指定的布尔数组的每个元素
fill(boolean[] a,int fromIndex,int toIndex,boolean val)将指定的布尔值分配给指定布尔数组的指定范围的每个元素
fill(byte[] a,byte val)将指定的字节值分配给指定字节数组的每个元素
fill(byte[] a,int fromIndex,int toIndex,byte val)将指定的字节值分配给指定字节数组的指定范围的每个元素
fill(char[] a,char val)将指定的char值分配给指定的char数组的每个元素
fill(char[] a,int fromIndex,int toIndex,char val)将指定的char值分配给指定char数组的指定范围的每个元素
fill(double[] a,double val)将指定的double值分配给指定的double数组的每个元素
fill(double[] a,int fromIndex,int toIndex,double val)将指定的double值分配给指定的double数组的指定范围内的每个元素
fill(float[] a,float val)将指定的浮点值分配给指定浮点数组的每个元素
fill(float[] a,int fromIndex,int toIndex,float val)将指定的浮点值分配给指定浮点数组的指定范围的每个元素
fill(int[] a,int val)将指定的int值分配给指定的int数组的每个元素
fill(int[] a,int fromIndex,int toIndex,int val)将指定的int值分配给指定int数组的指定范围的每个元素
fill(long[] a,long val)将指定的long值分配给指定的long数组的每个元素
fill(long[] a,int fromIndex,int toIndex,long val)将指定的long值分配给指定long数组的指定范围的每个元素
fill(short[] a,short val)将指定的short值分配给指定的short数组的每个元素
fill(short[] a,int fromIndex,int toIndex,short val)将指定的short值分配给指定的short数组的指定范围的每个元素

注意:在使用索引访问和修改数组元素时,确保索引值在数组的有效范围内,以避免出现 ArrayIndexOutOfBoundsException 异常。

import java.util.Arrays;

public class ArraysExample {
    public static void main(String[] args) {
        // 声明并初始化一个整型数组
        int[] array = {5, 2, 9, 1, 7};

        // 使用fill方法将整个数组填充为指定的值
        Arrays.fill(array, 0);
        System.out.println("使用fill方法后的数组: " + Arrays.toString(array));
        // 运行结果:使用fill方法后的数组: [0, 0, 0, 0, 0]

        // 使用sort方法对数组进行升序排序
        Arrays.sort(array);
        System.out.println("使用sort方法后的数组: " + Arrays.toString(array));
        // 运行结果:使用sort方法后的数组: [0, 0, 0, 0, 0]

        // 声明并初始化一个新的整型数组
        int[] newArray = {1, 2, 3, 4, 5};

        // 使用equals方法比较两个数组的元素值是否相等
        boolean isEqual = Arrays.equals(array, newArray);
        System.out.println("两个数组是否相等: " + isEqual);
        // 运行结果:两个数组是否相等: false

        // 使用binarySearch方法在已排序的数组中查找指定元素
        int index = Arrays.binarySearch(newArray, 4);
        System.out.println("查找元素的索引位置: " + index);
        // 运行结果:查找元素的索引位置: 3
    }
}

拓展小知识:

ArrayIndexOutOfBoundsException 是 Java 中的一个运行时异常,它表示数组访问超出了有效索引范围。这通常发生在以下情况下:

  1. 索引小于零:尝试使用负数作为数组元素的索引。
    int[] myArray = {1, 2, 3};
    int value = myArray[-1];  // 导致 ArrayIndexOutOfBoundsException 异常
    
  2. 索引大于等于数组长度:尝试访问或修改数组中不存在的索引位置。
    int[] myArray = {1, 2, 3};
    int value = myArray[3];  // 导致 ArrayIndexOutOfBoundsException 异常
    
  3. 在嵌套数组(多维数组)中的某个维度上的索引超出范围。
    int[][] myArray = new int[3][4];  // 3行4列的二维数组
    int value = myArray[3][0];  // 导致 ArrayIndexOutOfBoundsException 异常
    

为避免 ArrayIndexOutOfBoundsException 异常,需要确保在访问和修改数组元素时,所使用的索引值位于合法的范围内:

  • 数组的索引范围为从 0 到长度减一(length - 1)的整数范围。
  • 多维数组的每个维度的索引范围也是相同的。

在编写代码时,需要仔细检查数组索引的使用,确保它们在合法范围内,可以通过条件判断、循环和边界检查等方法来避免 ArrayIndexOutOfBoundsException 异常的发生。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员老李头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值