Arrays的简单使用

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(", ");
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值