Array是java.lang.reflect下的一个类,并且不能被new出来,也就是不能被实例化,它的构造器被private所修饰,且由于类被final修饰因此不能被继承,参考源码如下
package java.lang.reflect;
/**
* The {@code Array} class provides static methods to dynamically create and
* access Java arrays.
*
* {@code Array} permits widening conversions to occur during a get or set
* operation, but throws an {@code IllegalArgumentException} if a narrowing
* conversion would occur.
*
* @author Nakul Saraiya
*/
public final
class Array {
/**
* Constructor. Class Array is not instantiable.
*/
private Array() {}
// 以下省略
}
public final class Array extends Object
The Array class provides static methods to dynamically create and access Java arrays.
Array permits widening conversions to occur during a get or set operation, but throws an IllegalArgumentException if a narrowing conversion would occur.
静态方法:
public static Object newInstance(Class<?> componentType, int length)
throws NegativeArraySizeException {
return newArray(componentType, length);
}
public static Object newInstance(Class<?> componentType, int... dimensions)
throws IllegalArgumentException, NegativeArraySizeException {
return multiNewArray(componentType, dimensions);
}
public static native int getLength(Object array)
throws IllegalArgumentException;
public static native Object get(Object array, int index)
throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
public static native void setBoolean(Object array, int index, boolean z)
throws IllegalArgumentException, ArrayIndexOutOfBoundsException;
Java中最基本的一个存储结构。
提供了动态创建和访问 Java 数组的方法。其中的元素的类型必须相同。
效率高,但容量固定且无法动态改变。
它无法判断其中实际存有多少元素,length只是告诉我们array的容量。
这个类提供的好用的方法远远多于Array,也是平时我们开发时候经常使用的一个工具类,下面来看看
Arrays是java.util包下的一个工具类,提供了许多对数组操作的静态方法,包括数组的排序,对比,转化等等系列方法,十分的好用。
静态类Arrays
此静态类专门用来操作array ,提供搜索、排序、复制等静态方法。
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
Arrays.asList(array):将数组array转化为List
Arrays.toString
Arrays.sort
从小到大排序
public static void main(String[] args) {
int[] array = {3,2,1,4,5};
Arrays.sort(array); // 从小到大排序
System.out.println(Arrays.toString(array)); // 输出 [1, 2, 3, 4, 5]
}
从大到小排序:
重写compare方法来实现从大到小。
public static void main(String[] args) {
Integer[] array = {3,2,1,4,5};
Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer i1, Integer i2) {
return i2-i1;
}
};
Arrays.sort(array,cmp); // 从大到小排序
System.out.println(Arrays.toString(array)); // 输出 [5, 4, 3, 2, 1]
}
Arrays.equals 比较一维数组
Arrays.deepEquals 比较多维数组
toArray
Arrays.asList
public static void main(String[] args) {
Integer[] array = {1,2,3};
List<Integer> arrayList = new ArrayList<>(Arrays.asList(array)); // 数组转ArrayList
System.out.println(arrayList); // 输出 [1, 2, 3]
arrayList.toArray(); // ArrayList转数组
}