关于java数组Arrays类

2024-01-09 06:48:37

关于java数组Arrays类

前面的文章中,我们了解了数组创建方法等,我们本篇文章来了解一下数组的方法类Arrays,有了这个类,我们在日常写代码的时候就不不用自己去手动创建方法了😀。

Arrays类

  • 数组的工具类java.util.Arrays
  • 由于数组对象本身没有什么方法可以提供给我们调用,但是API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。
  • 查看JDK帮助文档🤔也可以来了解Arrays类。
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接用类名+点+方法名进行调用。
  • 不用使用对象来调用。

Arrays常见功能

  • 数组的输出方法
  • Arrays.toString(数组名字);

我们之前学习到的打印数组方法是这样的,自己定义一个方法,然后打印出数组中的元素。

public class Demo
{
	public static void main(String[] args)
    {
        int[] a = {1,2,3,4,5};
        printArrays(a);
    }
    
    public static void printArrays(int[] array)
    {
        for(int i = 0; i<array.length;i++)
        {
            System.out.print(array[i]+"\t");
        }
    }
}

我们执行一下输出的结果。

1 2 3 4 5

进程结束......

我们正常输出一下a。

public class Demo
{
	public static void main(String[] args)
    {
        int[] a = {1,2,3,4,5};
        System.out.print(a);
    }
}

我们执行一下输出的结果,会发现输出的是对象。

[I@1b6d3586

进程结束......

我们来使用Arrays输出一下。

import java.util.Arrays;//使用的时候自动生成导入的类

public class Demo
{
	public static void main(String[] args)
    {
        int[] a = {1,2,3,4,5};
        System.out.print(Arrays.toString(a));//Arrays.方法
    }
}

我们执行一下输出的结果。

[1,2,3,4,5]

进程结束......

这种方法是,将数组转为字符串的方法,我们也可以自己去创作一下自己的方法,可以实现相同的功能。

public class Demo
{
	public static void main(String[] args)
    {
        int[] a = {1,2,3,4,5};
        printArrays(a);
    }
    
    public static void printArrays(int[] array)
    {
        for(int i = 0; i<array.length;i++)
        {
            if(i==0)//如果是0,输出[
            {
                System.out.print("[");
            }
            if(i==array.length-1)//如果是最后一个输出最后一个的元素加上]
            {
                System.out.print(array[i]+"]");
            }
            else
            {
                System.out.print(array[i]+", ");//逗号间隔
            }
        }
    }
}

我们执行一下输出的结果,发现和上面的结果是一样的😀。

[1,2,3,4,5]

进程结束......

但是我们要避免自己创建重复的方法,因为这个方法是开发的时候开发者编写的,所以我们没有必要去重复编写相同功能的代码,直接拿过来用就可以了,这里只是让大家了解一下我们也可以自己模仿创建方法。

我们来看一下toString这个方法,开发者是如何编写的🤔

按住Ctrl键,然后点击toString就可以跳转到源码页面。

public static String toString(int[] a) {
        if (a == null)
            return "null";
        int iMax = a.length - 1;
        if (iMax == -1)
            return "[]";

        StringBuilder b = new StringBuilder();
        b.append('[');
        for (int i = 0; ; i++) {
            b.append(a[i]);
            if (i == iMax)
                return b.append(']').toString();
            b.append(", ");
        }
    }

我们可以看到底层的代码是这个样子的,当然很多东西对于我们现在来说比较陌生,我们往后会一点点去深入这些方法具体的实现逻辑😀但是和我们刚刚自己写的代码原理是比较相似的。

  • 数组的排序方法
  • Arrays.sort(数组名字);

我们重新定义一个数组,然后用排序的方法实现排序。

import java.util.Arrays;

public class Demo
{
	public static void main(String[] args)
    {
        int[] a = {1,88,3,66,5};
        Arrays.sort(a);
    }
}

我们执行一下输出的结果,可以看到数组已经排序完成了,这比我们之前写的反转数组的方法要简单许多😀。

反转数组

[1,3,5,66,88]

进程结束.......

我们可以看一下这个方法的源码。

public static void sort(int[] a) {
        DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
    }

这里一样也是不需要看懂,就是简单了解一下就好。

  • 数值的填充
  • Arrays.fill(数组名+区间+赋值);

public class Demo
{
	public static void main(String[] args)
    {
        int[] a = {10,20,30,40,50};
        Arrays.fill(a,2,4,0);//将2和4中间的数替换为0 2和4代表下标,不是数字2和4
    }
}

我们执行一下输出的结果。

[10, 20, 0, 0, 50]

进程结束.......

我们可以看一下这个方法的源码。

 public static void fill(int[] a, int fromIndex, int toIndex, int val)
 {
        rangeCheck(a.length, fromIndex, toIndex);//fromIndex是从哪个索引开始 toIndex是到哪个索引结束
        for (int i = fromIndex; i < toIndex; i++)
            a[i] = val;
    }

以上就是常见的Arrays类中的方法,当然还有很多很多方法,大家可以看一下JDK帮助文档,或者Idea进入这个类查看一下结构😀

文章来源:https://blog.csdn.net/SpringYang11/article/details/135469028
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。