Arrays类中常用的方法

  • Post author:
  • Post category:其他



目录


1.在使用之前导入Arrays包


2.Arrays.toString()方法


3.Arrays.sort()方法


3.1Arrays.sort(数组名称)


3.2Arrays.sort(数组名,起始下标,排序个数)


4.Arrays.equals()方法


5.Arrays.binarySearch()


6.Arrays.copyOf()


补充

1.在使用之前导入Arrays包

import java.util.Arrays;

2.Arrays.toString()方法

以字符串的形式快速输出数组的内容

package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(arr));
    }
}


//[1, 2, 3, 4, 5]

3.Arrays.sort()方法

3.1Arrays.sort(数组名称)

给对应的数组进行排序 (默认升序)

package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {5, 8, 1, 6, 9};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}


//[1, 5, 6, 8, 9]

3.2Arrays.sort(

数组名,起始下标,排序个数

)

对传入的数组进行对应的下标起始位置,以及排序个数进行排序

package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {5, 8, 1, 6, 9};
        Arrays.sort(arr,0,3);
        System.out.println(Arrays.toString(arr));
    }
}


//[1, 5, 8, 6, 9]

4.Arrays.equals()方法

注意:官方在Arrays类中,已经重写了equals()方法。此时

比较的是两个数组的内容是否相同

,而并不是地址是否相同!

以下为官方重写的equals方法:

public static boolean equals(int[] a, int[] a2) {
        if (a==a2)
            return true;
        if (a==null || a2==null)
            return false;

        int length = a.length;
        if (a2.length != length)
            return false;

        for (int i=0; i<length; i++)
            if (a[i] != a2[i])
                return false;

        return true;
    }

//false
package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {5, 8, 1, 6, 9};
        int arr1 [] = {5, 8, 1, 6};
        System.out.println(Arrays.equals(arr,arr1));
    }
}


//false

5.Arrays.binarySearch()

方法作用:在数组中查找元素  (

返回值大于等于零则认为数组中有该元素

int Arrays.binarySearch( Datatype[], Datatype key)

在数组中查找指定值,若找到,则返回此值的下标,若没找到,返回 -插入点-1;

package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {5, 8, 1, 6, 9};
        System.out.println(Arrays.binarySearch(arr,9));
        System.out.println(Arrays.binarySearch(arr,10));
    }
}


/*
4
-6
*/

6.Arrays.copyOf()

方法作用:拷贝数组

第一个参数是

原数组

,第二个参数是

拷贝长度

,返回值是将原数组拷贝一份返回

(它的底层其实是调用了System.arrayCopy()方法)

public static int[] copyOf(int[] original, int newLength) {
        int[] copy = new int[newLength];
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }
package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {5, 8, 1, 6, 9};
        int arr1 [] = Arrays.copyOf(arr,3);
        int arr2 [] = Arrays.copyOf(arr,5);
        int arr3 [] = Arrays.copyOf(arr,6);
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString(arr3));
    }
}


/*
[5, 8, 1]
[5, 8, 1, 6, 9]
[5, 8, 1, 6, 9, 0]
*/


注意:

如果拷贝长度超出原来数组的长度,则多出的部分使用0填充!!!

补充

问:为什么 Arrays.equals(a,b) 和 a.equals(b) 不同呢

答:数组是Object的子类,a.equals(b) 使用的是 Object 类的 equals 方法,是比较地址值的

而 Arrays 的equals()方法与Object的不同,它进行数组内容的比较

package day8_2;

import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int arr [] = {5, 8, 1, 6, 9};
        int arr1 [] = {5, 8, 1, 6, 9};
        System.out.println(Arrays.equals(arr,arr1));
        System.out.println(arr.equals(arr1));
    }
}


/*
true
false
*/



版权声明:本文为qq_58029155原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。