目录
import java.util.Arrays;
以字符串的形式快速输出数组的内容
- 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]
给对应的数组进行排序 (默认升序)
- 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]
对传入的数组进行对应的下标起始位置,以及排序个数进行排序
- 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]
注意:官方在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 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)); } } //false5.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 */