最详细的java数组讲解

java.util.Arrays类包含一个静态的工厂,允许数组被视为列表。以下是关于数组的要点:

  • 这个类包含了各种方法来操作数组(比如排序和搜索)。

  • 在这个类中的方法抛出NullPointerException如果指定数组引用为null。

类声明

以下是java.util.Arrays类的声明:

public class Arrays
    extends Object

类方法

S.N.方法 & 描述
1 static <T> List<T> asList(T a)
此方法返回一个受指定数组支持的固定大小的列表。
2 static int binarySearch(byte[] a, byte key)
此方法搜索指定的字节数组使用二进制搜索算法来指定值。
3 static int binarySearch(byte[] a, int fromIndex, int toIndex, byte key)
此方法搜索范围指定的字节数组使用二进制搜索算法来指定值。
4 static int binarySearch(char[] a, char key)
此方法搜索指定字符数组,使用二进制搜索算法来指定值。
5 static int binarySearch(char[] a, int fromIndex, int toIndex, char key)
此方法搜索一个范围内的指定字符数组,使用二进制搜索算法来指定值。
6 static int binarySearch(double[] a, double key)
此方法搜索指定double数组,使用二进制搜索算法来指定值。
7 static int binarySearch(double[] a, int fromIndex, int toIndex, double key)
此方法搜索范围double指定数组,使用二进制搜索算法来指定值。
8 static int binarySearch(float[] a, float key)
此方法搜索浮点数的指定数组,使用二进制搜索算法来指定值。
9 static int binarySearch(float[] a, int fromIndex, int toIndex, float key)
此方法搜索范围指定浮点数的数组,使用二进制搜索算法来指定值。
10 static int binarySearch(int[] a, int key) 
此方法搜索指定的int型数组使用二进制搜索算法来指定值。
11 static int binarySearch(int[] a, int fromIndex, int toIndex, int key) 
此方法搜索范围指定的int型数组使用二进制搜索算法来指定值。
12 static int binarySearch(long[] a, int fromIndex, int toIndex, long key) 
此方法搜索范围指定long数组,使用二进制搜索算法来指定值。
13 static int binarySearch(long[] a, long key) 
此方法搜索指定long数组,使用二进制搜索算法来指定值。
14 static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key) 
此方法搜索范围指定数组,使用二进制搜索算法来指定对象。
15 static int binarySearch(Object[] a, Object key) 
此方法搜索指定数组,使用二进制搜索算法来指定对象。
16 static int binarySearch(short[] a, int fromIndex, int toIndex, short key) 
此方法搜索范围指定short数组,使用二进制搜索算法来指定值。
17 static int binarySearch(short[] a, short key) 
此方法搜索指定short数组,使用二进制搜索算法来指定值。
18 static <T> int binarySearch(T[] a, int fromIndex, int toIndex, T key, Comparator<? super T> c) 
此方法搜索范围指定数组,使用二进制搜索算法来指定对象。
19 static <T> int binarySearch(T[] a, T key, Comparator<? super T> c) 
此方法搜索指定数组,使用二进制搜索算法来指定对象。
20 static boolean[] copyOf(boolean[] original, int newLength) 
此方法复制指定的数组,截取或填充false (如有必要),以使副本具有指定的长度。
21 static byte[] copyOf(byte[] original, int newLength) 
此方法复制指定的数组,截取或填充用零(如有必要),以使副本具有指定的长度。
22 static char[] copyOf(char[] original, int newLength) 
此方法复制指定的数组,截取或填充用null(如有必要),以使副本具有指定的长度。
23 static double[] copyOf(double[] original, int newLength) 
此方法复制指定的数组,截取或填充用零(如有必要),以使副本具有指定的长度。
24 static float[] copyOf(float[] original, int newLength) 
此方法复制指定的数组,截取或填充用零(如有必要),以使副本具有指定的长度。
25 static int[] copyOf(int[] original, int newLength) 
此方法复制指定的数组,截取或填充用零(如有必要),以使副本具有指定的长度。
26 static long[] copyOf(long[] original, int newLength) 
此方法复制指定的数组,截取或填充用零(如有必要),以使副本具有指定的长度。
27 static short[] copyOf(short[] original, int newLength) 
此方法复制指定的数组,截取或填充用零(如有必要),以使副本具有指定的长度。
28 static <T> T[] copyOf(T[] original, int newLength) 
此方法复制指定的数组,截取或用null填充(如有必要),以使副本具有指定的长度。
29 static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) 
此方法复制指定的数组,截取或用null填充(如有必要),以使副本具有指定的长度。
30 static boolean[] copyOfRange(boolean[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
31 static byte[] copyOfRange(byte[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
32 static char[] copyOfRange(char[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
33 static double[] copyOfRange(double[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
34 static float[] copyOfRange(float[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
35 static int[] copyOfRange(int[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
36 static long[] copyOfRange(long[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
37 static short[] copyOfRange(short[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
38 static <T> T[] copyOfRange(T[] original, int from, int to) 
此方法复制指定的数组到一个新的数组的指定范围。
39 static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) 
此方法复制指定的数组到一个新的数组的指定范围。
40 static boolean deepEquals(Object[] a1, Object[] a2)
如果两个指定数组相等此方法返回true。
41 static int deepHashCode(Object[] a) 
此方法返回基于指定数组的“深层内容”返回哈希码。
42 static String deepToString(Object[] a) 
此方法返回指定数组的“深层内容”的字符串表示形式。
43 static boolean equals(boolean[] a, boolean[] a2) 
如果布尔值的两个指定数组相互相等此方法返回true。
44 static boolean equals(byte[] a, byte[] a2) 
如果两个指定字节数组相互相等此方法返回true。
45 static boolean equals(char[] a, char[] a2) 
如果两个指定字符数组相互相等此方法返回true。
46 static boolean equals(double[] a, double[] a2) 
如果两个指定double数组相互相等此方法返回true。
47 static boolean equals(float[] a, float[] a2) 
如果浮点数的两个指定数组相互相等此方法返回true。
48 static boolean equals(int[] a, int[] a2) 
如果整数的两个指定数组相互相等此方法返回true。
49 static boolean equals(long[] a, long[] a2) 
如果两个指定long数组相互相等此方法返回true。
50 static boolean equals(Object[] a, Object[] a2) 
如果两个指定对象数组相互相等此方法返回true。
51 static boolean equals(short[] a, short[] a2) 
如果两个指定对象数组相互相等此方法返回true。
52 static void fill(boolean[] a, boolean val) 
此方法分配指定指定布尔值数组的每个元素。
53 static void fill(boolean[] a, int fromIndex, int toIndex, boolean val) 
此方法分配指定指定布尔值数组的指定范围中的每个元素的布尔值。
54 static void fill(byte[] a, byte val) 
此方法分配指定指定的字节数组的每个元素的字节值。
55 static void fill(byte[] a, int fromIndex, int toIndex, byte val) 
此方法分配指定的字节数组指定范围中的每个元素的字节值。
56 static void fill(char[] a, char val) 
此方法分配指定的char值到指定数组的每个元素的字符。
57 static void fill(char[] a, int fromIndex, int toIndex, char val) 
此方法分配指定的char值的指定数组的指定范围中的每个元素的字符。
58 static void fill(double[] a, double val) 
此方法分配一个指定的double值到指定数组的每个元素的double值。
59 static void fill(double[] a, int fromIndex, int toIndex, double val) 
此方法分配一个指定的double值到指定的double数组的指定范围中的每个元素。
60 static void fill(float[] a, float val) 
此分配方法指定float值数指定数组的每个元素的浮点值。
61 static void fill(float[] a, int fromIndex, int toIndex, float val) 
此分配方法指定float值数指定数组的指定范围中的每个元素的浮点值。
62 static void fill(int[] a, int val) 
此分配方法指定数组的指定范围中的每个元素的int值。
63 static void fill(int[] a, int fromIndex, int toIndex, int val) 
此分配方法指定数组的指定范围中的每个元素的int值。
64 static void fill(long[] a, int fromIndex, int toIndex, long val) 
此分配方法指定数组的指定范围中的每个元素的long值。
65 static void fill(long[] a, long val) 
此分配方法指定long指定数组的每个元素的long值。
66 static void fill(Object[] a, int fromIndex, int toIndex, Object val) 
此方法分配指定的Object引用的对象的指定数组的指定范围中的每个元素。
67 static void fill(Object[] a, Object val) 
此方法分配指定的Object引用的对象指定的数组中的每个元素。
68 static void fill(short[] a, int fromIndex, int toIndex, short val) 
此方法分配指定数组的指定范围中的每个元素的short值。
69 static void fill(short[] a, short val) 
此方法分配指定short数组的每个元素的short值。
70 static int hashCode(boolean[] a) 
此方法返回基于指定数组的内容的哈希码。
71 static int hashCode(byte[] a) 
此方法返回基于指定数组的内容的哈希码。
72 static int hashCode(char[] a) 
此方法返回基于指定数组的内容的哈希码。
73 static int hashCode(double[] a) 
此方法返回基于指定数组的内容的哈希码。
74 static int hashCode(float[] a) 
此方法返回基于指定数组的内容的哈希码。
75 static int hashCode(int[] a) 
此方法返回基于指定数组的内容的哈希码。
76 static int hashCode(long[] a) 
此方法返回基于指定数组的内容的哈希码。
77 static int hashCode(Object[] a) 
此方法返回基于指定数组的内容的哈希码。
78 static int hashCode(short[] a) 
此方法返回基于指定数组的内容的哈希码。
79 static void sort(byte[] a) 
此方法指定的字节数组排序按数字升序顺序。
80 static void sort(byte[] a, int fromIndex, int toIndex) 
此方法对指定范围内指定的字节数组按数字升序顺序。
81 static void sort(char[] a) 
此方法将char型数组排序按数字升序顺序。
82 static void sort(char[] a, int fromIndex, int toIndex) 
此方法对指定范围内指定的字符数组按数字升序顺序。
83 static void sort(double[] a) 
此方法指定double数组排序按数字升序顺序。
84 static void sort(double[] a, int fromIndex, int toIndex) 
此方法对指定范围的指定double 数组按数字升序顺序。
85 static void sort(float[] a) 
此方法指定浮点数数组排序按数字升序顺序。
86 static void sort(float[] a, int fromIndex, int toIndex) 
此方法对指定范围内的指定float数组按数字升序顺序。
87 static void sort(int[] a) 
此方法指定的int型数组排序按数字升序顺序。
88 static void sort(int[] a, int fromIndex, int toIndex) 
此方法对指定范围内指定的int型数组按数字升序顺序。
89 static void sort(long[] a) 
此方法指定的long数组排序按数字升序顺序。
90 static void sort(long[] a, int fromIndex, int toIndex) 
此方法对指定范围内指定long数组按数字升序顺序。
91 static void sort(Object[] a) 
根据其元素的自然顺序,此方法对指定对象数组按升序进行。
92 static void sort(Object[] a, int fromIndex, int toIndex) 
根据其元素的自然顺序,此方法对指定对象数组按升序顺序的指定范围。
93 static void sort(short[] a) 
此方法指定的short 数组排序按数字升序顺序。
94 static void sort(short[] a, int fromIndex, int toIndex) 
此方法对指定范围内的short指定数组按数字升序顺序。
95 static <T> void sort(T[] a, Comparator<? super T> c) 
此方法的对象进行排序根据引起的指定比较顺序指定数组。
96 static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) 
根据引起由指定比较器的顺序此方法排序对象的指定数组的指定范围。
97 static String toString(boolean[] a) 
此方法返回指定的boolean数组内容的字符串表示形式。
98 static String toString(byte[] a) 
此方法返回指定的byte数组内容的字符串表示形式。
99 static String toString(char[] a) 
此方法返回指定的char数组内容的字符串表示形式。
100 static String toString(double[] a) 
此方法返回指定的double数组内容的字符串表示形式。
101 static String toString(float[] a) 
此方法返回指定的float数组内容的字符串表示形式。
102 static String toString(int[] a) 
此方法返回指定的int数组内容的字符串表示形式。
103 static String toString(long[] a) 
此方法返回指定的long数组内容的字符串表示形式。
104 static String toString(Object[] a) 
此方法返回指定的对象数组内容的字符串表示形式。
105 static String toString(short[] a) 
此方法返回指定的short数组内容的字符串表示形式。

方法继承

这个类从以下类继承的方法:

  • java.util.Object

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/java/util/java_util_arrays.html

数组基本概念

数组指的是一组相关变量的集合,Java 语言中提供的数组是用来存储固定大小的同类型元素。

数组的元素类型和大小都是确定的。

数组的申明

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

dataType[] arrayRefVar;   // 首选的方法
或
dataType arrayRefVar[];  // 效果相同,但不是首选方法

注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

下面是这两种语法的示例:

double[] myList;         // 首选的方法
或
double myList[];         //  效果相同,但不是首选方法

创建数据

Java语言使用new操作符来创建数组,语法如下:

arrayRefVar = new dataType[arraySize];

上面的语法语句做了两件事:

  1. 使用 dataType[arraySize] 创建了一个数组。
  2. 把新创建的数组的引用赋值给变量 arrayRefVar。

数组变量的声明,和创建数组可以用一条语句完成,如下所示:

//动态初始化
dataType[] arrayRefVar = new dataType[arraySize];

另外,还可以使用如下的方式创建数组。

//静态初始化,简化格式
dataType[] arrayRefVar = {value0, value1, ..., valuek};

//静态初始化,完整格式
dataType[] arrayRefVar = new dataType[]{value0, value1, ..., valuek};

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。

使用new方式创建的数组,其内容为对应数据类型的默认值。

数组也属于引用数据类型,数组与对象的唯一区别在于:对象中的堆内存保存的是该对象的属性,而数组中的堆内存保存的是其对应的一组信息,包含索引与对应的值。

多维数组

多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:

String str[][] = new String[3][4];

多维数组的动态初始化(以二维数组为例)

  1. 直接为每一维分配空间,格式如下:
dataType[][] arrayName = new type[arraylenght1][arraylenght2];

dataType 可以为基本数据类型和复合数据类型,arraylenght1 和arraylenght2 必须为正整数,arraylenght1 为行数,arraylenght2 为列数。
例如:

int a[][] = new int[2][3];

数组的引用传递

数组作为引用类型,将数组作为参数传递的其他函数中,在这个函数中对数组的修改一定会影响到原始数据。

数组的操作方法

java针对数据提供了一些类库支持。

数组拷贝

System.arraycopy()方法,函数原型是:

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

src:源数组

srcPos:源数组拷贝开始索引

dest: 目标数组

destPos:目标数组拷贝开始索引

length: 拷贝长度

Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

posted @ 2021-02-27 15:00  JAVA从入门到进阶  阅读(284)  评论(0编辑  收藏  举报