Java-数组

1-什么是数组

  • 数组(array):是一种用于存储多个相同数据类型的存储模型(可以理解为容器)。

2-数组定义和静态初始化

数组有两种定义格式:

  • 格式1:数据类型[] 变量名;

  • 范例: int[] arr;

  • 定义了一个int类型的数组,数组名是arr

  • 格式2:数据类型 变量名[];

  • 范例: int arr[];

  • 定义了一个int类型的变量,变量名是arr数组

  • 所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

  • 注意:数组中的每一个数据,我们称之为数组中的元素

  • 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度

  • 格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};

  • 范例:int[] arr = new int[]{1,2,3};

针对这种格式呢?Java提供了一种简化的格式,让我们使用起来更方便

  • 简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,…};

  • 范例:int[] arr = {1,2,3};

3-数组的访问

  • 索引是数组中数据的编号方式

  • 作用:用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

  • 它还有这样的几个特征:

    • 特征①:索引从0开始

    • 特征②:索引是连续的

    • 特征③:索引逐一增加,每次加1

/*
    数组变量访问方式
        格式:数组名

    数组内部保存的数据的访问方式
        格式:数组名[索引]
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个数组,并进行初始化
//        int[] scores = new int[]{93,96,99};
        int[] scores = {93,96,99};

        //输出数组名
        System.out.println(scores); //[I@776ec8df

        //输出数组中的元素
        System.out.println(scores[0]);
        System.out.println(scores[1]);
        System.out.println(scores[2]);
        System.out.println("-----------");

        //修改数组中的元素
        scores[0] = 100;
        scores[1] = 98;
        scores[2] = 95;
        //再次输出数组中的元素
        System.out.println(scores[0]);
        System.out.println(scores[1]);
        System.out.println(scores[2]);
    }
}

举例:获取最大值

/*
    获取最大值
 */
public class ArrayTest02 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {12, 45, 98, 73, 60};

        //定义变量max存储最大值,取第一个数据为变量的初始值
        int max = arr[0];

        //与数组中剩余数据逐个比对,每次比对将最大值保存到变量max中
        for (int i=1; i<arr.length; i++) {
            if(arr[i] > max) {
                max = arr[i];
            }
        }

        //循环结束后输出变量max的值
        System.out.println("max:" + max);
    }
}

 4-数组动态初始化

来,继续啊,下面我们来学习数组初始化之动态初始化。

前面呢,我们已经学习过了静态初始化,也就是初始化时指定每个数组元素的初始值。

初始化时只指定数组长度,由系统为数组分配初始值

  • 格式:数据类型[] 变量名 = new 数据类型[数组长度];

  • 范例:int[] arr = new int[3];

### Java 数组高级用法教程 Java数组作为基础数据结构之一,提供了多种高级用法和操作技巧。以下是关于Java数组的一些进阶内容,涵盖多维数组、不规则数组、去重方法以及`java.util.Arrays`类的高级应用。 #### 1. 多维数组与不规则数组 多维数组是指数组的元素本身也是数组。在Java中,可以通过声明和初始化来创建多维数组。例如,二维数组可以表示为矩阵形式。此外,不规则数组(即每一行的长度不同)也可以通过手动初始化实现[^2]。 ```java // 定义一个3x3的二维数组 int[][] regularArray = new int[3][3]; // 定义一个不规则数组 int[][] irregularArray = { {1, 2}, {3, 4, 5}, {6} }; ``` #### 2. 使用`java.util.Arrays`类进行数组操作 `java.util.Arrays`类提供了丰富的静态方法,用于简化数组的操作。以下是一些常用的高级方法: - **排序**:使用`Arrays.sort()`对数组进行排序。 - **搜索**:使用`Arrays.binarySearch()`在已排序数组中查找特定值。 - **填充**:使用`Arrays.fill()`将数组的所有元素设置为指定值。 - **比较**:使用`Arrays.equals()`判断两个数组是否相等。 示例代码如下: ```java import java.util.Arrays; public class ArrayOperations { public static void main(String[] args) { int[] numbers = {5, 3, 8, 1, 9}; // 排序 Arrays.sort(numbers); System.out.println(Arrays.toString(numbers)); // 输出 [1, 3, 5, 8, 9] // 填充 Arrays.fill(numbers, 0); System.out.println(Arrays.toString(numbers)); // 输出 [0, 0, 0, 0, 0] // 比较 int[] anotherArray = {0, 0, 0, 0, 0}; boolean areEqual = Arrays.equals(numbers, anotherArray); System.out.println(areEqual); // 输出 true } } ``` #### 3. 数组去重 在Java中,数组去重可以通过多种方式实现。对于基本类型数组,可以结合`Set`接口完成去重;对于对象数组,则需要定义适当的`equals()`和`hashCode()`方法[^4]。 示例代码如下: ```java import java.util.Arrays; import java.util.LinkedHashSet; public class ArrayDeduplication { public static void main(String[] args) { int[] numbers = {1, 2, 2, 3, 4, 4, 5}; // 使用 LinkedHashSet 去重并保持顺序 LinkedHashSet<Integer> set = new LinkedHashSet<>(); for (int num : numbers) { set.add(num); } // 将结果转换回数组 Integer[] deduplicatedArray = set.toArray(new Integer[0]); System.out.println(Arrays.toString(deduplicatedArray)); // 输出 [1, 2, 3, 4, 5] } } ``` #### 4. 动态数组扩展 由于Java数组的大小固定,无法动态扩展。如果需要动态调整数组大小,可以考虑使用`ArrayList`或手动实现数组扩展逻辑。以下是手动扩展数组的示例: ```java public class ArrayResize { public static void main(String[] args) { int[] originalArray = {1, 2, 3}; int[] newArray = new int[originalArray.length + 2]; // 将原数组复制到新数组 System.arraycopy(originalArray, 0, newArray, 0, originalArray.length); // 在新数组中添加额外元素 newArray[originalArray.length] = 4; newArray[originalArray.length + 1] = 5; System.out.println(Arrays.toString(newArray)); // 输出 [1, 2, 3, 4, 5] } } ``` #### 5. 并行处理数组Java 8开始,`Arrays`类支持并行操作,例如`parallelSort()`方法可以利用多核处理器加速排序过程。这在处理大规模数组时尤其有用。 ```java import java.util.Arrays; public class ParallelArrayProcessing { public static void main(String[] args) { int[] largeArray = new int[1_000_000]; for (int i = 0; i < largeArray.length; i++) { largeArray[i] = (int) (Math.random() * 1_000_000); } // 使用并行排序 Arrays.parallelSort(largeArray); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值