在Java里Arrays类提供了哪些常用方法

来源:站长源码作者:柬埔寨程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《在Java里Arrays类提供了哪些常用方法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《在Java里Arrays类提供了哪些常用方法》有用,将其分享出去将是对创作者最好的鼓励。

在Java开发中,数组是最基础的数据结构之一,而java.util包下的Arrays类专门为数组操作提供了一系列静态方法,覆盖了排序、查找、拷贝、比较等常见需求,避免了开发者重复编写基础逻辑。掌握Arrays类的常用方法,能极大提升数组相关操作的编码效率。

在Java里Arrays类提供了哪些常用方法

Arrays类常用方法分类说明

1. 数组排序方法

Arrays类提供了多种排序方法,最常用的是sort()方法,支持对不同类型的数组进行排序,默认采用升序排列。

对于基本类型数组,sort()方法会直接修改原数组,不需要返回新的数组。如果是引用类型数组,需要保证元素实现了Comparable接口,或者传入自定义的Comparator比较器。

import java.util.Arrays;

public class ArraysDemo {
    public static void main(String[] args) {
        // 基本类型数组排序
        int[] intArr = {3, 1, 4, 2, 5};
        Arrays.sort(intArr);
        System.out.println("排序后的int数组:" + Arrays.toString(intArr)); // 输出[1, 2, 3, 4, 5]

        // 引用类型数组排序,自定义比较器
        String[] strArr = {"apple", "banana", "cat", "dog"};
        // 按字符串长度降序排序
        Arrays.sort(strArr, (a, b) -> b.length() - a.length());
        System.out.println("按长度排序后的字符串数组:" + Arrays.toString(strArr)); // 输出[banana, apple, cat, dog]
    }
}

2. 数组查找方法

binarySearch()是Arrays类提供的二分查找方法,要求数组必须是升序排列的,否则查找结果会不准确。该方法返回目标元素的索引,如果不存在则返回负数。

import java.util.Arrays;

public class SearchDemo {
    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9};
        // 查找存在的元素
        int index1 = Arrays.binarySearch(arr, 5);
        System.out.println("元素5的索引:" + index1); // 输出2
        // 查找不存在的元素
        int index2 = Arrays.binarySearch(arr, 4);
        System.out.println("元素4的索引:" + index2); // 输出-3,表示如果插入4应该放在索引2的位置
    }
}

3. 数组拷贝方法

Arrays类提供了copyOf()copyOfRange()两个拷贝方法,前者拷贝整个数组,后者拷贝数组的指定区间。

copyOf()方法会创建一个新的数组,长度为传入的参数长度,如果原数组长度小于新长度,多余的位置会用默认值填充;copyOfRange()的区间是左闭右开的,即包含起始索引,不包含结束索引。

import java.util.Arrays;

public class CopyDemo {
    public static void main(String[] args) {
        int[] original = {1, 2, 3, 4, 5};
        // 拷贝整个数组,长度扩展为8
        int[] copy1 = Arrays.copyOf(original, 8);
        System.out.println("扩展拷贝结果:" + Arrays.toString(copy1)); // 输出[1, 2, 3, 4, 5, 0, 0, 0]
        // 拷贝指定区间,从索引1到索引3(不包含3)
        int[] copy2 = Arrays.copyOfRange(original, 1, 3);
        System.out.println("区间拷贝结果:" + Arrays.toString(copy2)); // 输出[2, 3]
    }
}

4. 数组比较与填充方法

equals()方法用于比较两个数组是否相等,要求两个数组的长度相同,且对应位置的元素都相等才会返回true。fill()方法用于将数组的所有元素或者指定区间的元素填充为同一个值。

import java.util.Arrays;

public class OtherDemo {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 2, 3};
        int[] arr3 = {1, 2, 4};
        // 数组比较
        System.out.println("arr1和arr2是否相等:" + Arrays.equals(arr1, arr2)); // 输出true
        System.out.println("arr1和arr3是否相等:" + Arrays.equals(arr1, arr3)); // 输出false

        // 数组填充
        int[] fillArr = new int[5];
        Arrays.fill(fillArr, 10);
        System.out.println("全部填充结果:" + Arrays.toString(fillArr)); // 输出[10, 10, 10, 10, 10]
        // 区间填充,从索引1到索引3填充为20
        Arrays.fill(fillArr, 1, 3, 20);
        System.out.println("区间填充结果:" + Arrays.toString(fillArr)); // 输出[10, 20, 20, 10, 10]
    }
}

5. 数组转字符串方法

toString()方法可以将数组转换为格式化的字符串,方便打印查看数组内容。如果是多维数组,需要使用deepToString()方法才能正确展示所有层级的元素。

import java.util.Arrays;

public class ToStringDemo {
    public static void main(String[] args) {
        int[] singleArr = {1, 2, 3};
        System.out.println("一维数组转字符串:" + Arrays.toString(singleArr)); // 输出[1, 2, 3]

        int[][] multiArr = {{1, 2}, {3, 4}};
        // 直接用toString会输出对象地址
        System.out.println("直接转多维数组:" + Arrays.toString(multiArr));
        // 使用deepToString才能正确展示
        System.out.println("多维数组转字符串:" + Arrays.deepToString(multiArr)); // 输出[[1, 2], [3, 4]]
    }
}

注意事项

  • 使用binarySearch()前必须保证数组是升序排列的,否则结果不可靠。
  • sort()方法会直接修改原数组,如果需要保留原数组,需要先拷贝再排序。
  • 操作数组区间的方法(如copyOfRange()fill()的区间重载)要注意索引越界问题,起始索引不能小于0,结束索引不能大于数组长度。
  • 对于引用类型数组的排序,如果没有实现Comparable接口也没有传入比较器,会抛出ClassCastException

Arrays类Java数组数组排序数组查找数组拷贝修改时间:2026-07-18 03:42:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。