Arrays工具类
它是Java API文档已经给我们提供好的一个现成类,对于我们来说直接使用即可
在以后开发过程中,就2种情况:
1.自己写类,自己写方法,自己写实现……【累】
2.别人已经给你写好了,直接拿过来用就可以了……【简单】
Arrays类常用方法
方法一
java">static String toString(int[] a) 返回指定数组的内容的字符串表示,就是把数组内容转为字符串格式,原封不动的打印出来(返回类型String)public class Xx {public static void main(String[] args) {int[] a = {1,22,3,4,55,16};System.out.println(a);//[I@4eec7777String string = Arrays.toString(a);System.out.println(string);//[1, 22, 3, 4, 55, 16]}
}
方法二
java">static void sort(int[] a) 按照数字顺序排列指定的数组,就是对数组进行自然排序(自然排序:从小到大排序)【无返回不能变量接收也不能直接打印】public class Xx {public static void main(String[] args) {int[] a = {1,22,3,4,55,16};System.out.println(a);//[I@4eec7777Arrays.sort(a);String string = Arrays.toString(a);System.out.println(string);//[1, 3, 4, 16, 22, 55]}
}
方法三
java">static void fill(int[] a, int val) 将val的值填充a数组中的每个元素public class Xx {public static void main(String[] args) {int[] a = {1,22,3,4,55,16};System.out.println(a);//[I@4eec7777Arrays.fill(a,10);String string = Arrays.toString(a);System.out.println(string);//[10, 10, 10, 10, 10, 10]}
}
方法四
java">static int binarySearch(int[] a, int key) 使用二叉搜索算法搜索指定的int数组的指定值【就是查询key在a数组中存在的索引位置】
使用二叉搜索的前提:必须是排序的,否则无效搜索:A、自然排序(从小到大)B、二叉搜索(去中间值那个)适用场景:A、数据量小,自然排序快B、数据量大,二叉搜索快public class Xx {public static void main(String[] args) {int[] a = {1,22,3,4,55,16};System.out.println(a);//[I@4eec7777Arrays.sort(a);//先排序int i = Arrays.binarySearch(a, 4);//key是排序之后查找的值索引,有返回值类型System.out.println("key的索引位置:"+i);//[10, 10, 10, 10, 10, 10]}
}
方法五
java">static int[] copyOf(int[] original, int newLength) 数组的扩容和缩容的方法【复制粘贴】扩容:如果newLength大于original数组的长度,就是扩容,扩容后original数组所有的元素都已经复制到新数组中,没赋到值的0补充缩容:如果newLength小于original数组的长度,就是缩容,缩容后original数组中的元素从前往后复制到新数组中,直到到达newLengt的长度限制public class Xx {public static void main(String[] args) {int[] a = {1,22,3,4,55,16};System.out.println(a);//[I@4eec7777int[] ints1 = Arrays.copyOf(a, 8);//扩容int[] ints2 = Arrays.copyOf(a, 3);//缩容System.out.println(Arrays.toString(ints1));//[1, 22, 3, 4, 55, 16, 0, 0]System.out.println(Arrays.toString(ints2));//[1, 22, 3]}
}
操作之后都是新地址了
方法六
java">static int[] copyOfRange(int[] original, int from, int to) 将指定数组的指定范围[from,to]复制到新数组中 注意:from给定的值不能大于或者等于to;否则大于之后报错,等于之后只打印出一个中括号public class Xx {public static void main(String[] args) {int[] a = {1, 22, 3, 4, 55, 16};System.out.println(a);//[I@4eec7777int[] ints = Arrays.copyOfRange(a, 2, 5);System.out.println(Arrays.toString(ints));//[3, 4, 55]}
}
操作之后都是新地址了
既然是别人写好的工具类,如何调用?
类名.方法名(); //对于工具类的方法,大多都是这样调用(用static修饰的方法都可以类点方法)
建议:对于API文档真实开发中遇到需要查哪一个类或哪些工具类、所有的方法……可直接百度
可变参数
就形参列表里面它能接收0个或者n个参数
语法格式:数据类型… 变量名
java">例:
public class xx {public static void main(String[] args) {add();add(1);add(1,2,3,4);//……,方法里面的参数能接收0个或者n个参数}public static void add(int... age) {System.out.println(age.length);}
}
可变参数的注意事项:
A、1个方法中最多只能有1个可变参数
B、可变参数必须放到形参列表末尾
其实可变参数本质就是一个数组
jd-gui工具
把字节码文件翻译成Java文件(反编译)
java">把上面可变参数例子的class文件进行反编译效果:
import java.io.PrintStream;
public class xx
{public static void main(String[] args){add(new int[0]);//与上区别add(new int[] { 1 });//与上区别add(new int[] { 1, 2, 3, 4 });//与上区别}public static void add(int[] age) {//与上区别System.out.println(age.length);}
}