关于java数组Arrays类

关于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进入这个类查看一下结构

你可能感兴趣的:(java,python,开发语言)