java.util.Arrays简单使用(int)
binarySearch(int[] a, int key)
a->数组名,key->查找的值
public class ArraysTest {
public static void main(String[] args) {
int [] arrays={3,1,35,75,52};
System.out.println(Arrays.binarySearch(arrays, 1));
}
//无序时返回-1
}
public class ArraysTest {
public static void main(String[] args) {
int [] arrays={-1,1,5,7,9};
System.out.println(Arrays.binarySearch(arrays, 1));
}
//结果为1
}
原因:
源码中binarySearch方法调用了 binarySearch0, binarySearch0本质上是一个二分查找方法,而二分查找方法必须是查找有序的
sort(a)排序
a->数组名
public class ArraysTest {
public static void main(String[] args) {
int[] arrays = { -45, 2, 1, 0, 2 };
Arrays.sort(arrays);
for (int i : arrays) {
System.out.print(i+" ");
}
}
}
Arrays.copyOf(int[] original, int newLength)
original->数组名,newLength->新数组的数组长度
public class ArraysTest {
public static void main(String[] args) {
int[] arraysA = { -45, 2, 1, 0, 2 };
int[] arraysB = Arrays.copyOf(arraysA, -1);//执行时出现java.lang.NegativeArraySizeException
int[] arraysC = Arrays.copyOf(arraysA, 3);//长度为3,输出前3位
int[] arraysD = Arrays.copyOf(arraysA, 7);//长度为7,输出数组arraysA全部然后剩余长度补0
System.out.println(arraysC.length);//3
for (int i : arraysC) {
System.out.print(i + " ");//-45 2 1
}
System.out.println(arraysD.length);
for (int i : arraysD) {
System.out.print(i + " ");//-45 2 1 0 2 0 0
}
}
}
原因:
源码:未懂
Arrays.fill(int[]a, int val)
a->数组名,val->替换的数,将数组中所有数转为val
public class ArraysTest {
public static void main(String[] args) {
int[] arraysA = { -45, 2, 1, 0, 2 };
Arrays.fill(arraysA, 5);
for (int i : arraysA) {
System.out.print(i + " ");//5 5 5 5 5
}
Arrays.fill(arraysA, 0);
for (int i : arraysA) {
System.out.print(i + " ");// 0 0 0 0 0
}
}
}
原因:
源码:
public static void fill(int[] a, int val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
//将数组和值val传进fill方法
//for循环遍历然后将val传给a[i]
toString(int []a)
public class ArraysTest {
public static void main(String[] args) {
int[] arraysA = { -45, 2, 1, 0, 2 };
int[] arraysB =null;
int[] arraysC ={};
System.out.println(Arrays.toString(arraysA));//[-45, 2, 1, 0, 2]
System.out.println(Arrays.toString(arraysB));//null
System.out.println(Arrays.toString(arraysC));//[]
}
}
原因:
源码:
public static String toString(int[] a) {
if (a == null)
return "null";//如果数组对象为null返回null
int iMax = a.length - 1;//数组长度-1(从0开始能遍历到的最大下标)
if (iMax == -1)//数组没有值->int[] arraysC ={};
return "[]";
StringBuilder b = new StringBuilder();//StringBuilder线程不安全,在原有对象基础上进行操作,性能高
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)//访问到最大下标就执行下面toString()方法
return b.append(']').toString();//与上面不一样,无参的toString()方法->将StringBuilder转为字符串String
b.append(", ");
}
}