目录
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 版权协议,转载请附上原文出处链接和本声明。