千万不要小看数组——其实你不会数组
数组是个小东西
初学的时候,觉得数组很简单,就像是一个矩阵嘛,里面存的都是基本数据,或者字符串。只要掌握了遍历,能够使用数组的查找,排序,找最值,看上去很简单实用,管理数据嘛,存放数据嘛,但其实你不懂数组。
数组到底是什么
简单地说,数组也是个类,数组最独特的地方就是他可以存储基本数据类型的数据。
基本数据类型 [] 数组名称=new 基本类型[(长度)];
int [] arr =new int[3 ];最简单也是最好理解的数组,依靠[]脚标遍历。作为一个对象它却完全没有什么方法,只有一个可怜属性,length。他们作为对象只跟Object有关系,毕竟是继承了Object的方法,getclass()可以查看到这个数组的字节码。
他们的区别当然只是少了个s这么简单,我们可以看到数组的方法奇少,根本不方便实用,当你正在使用数组的时候突然想来个整数按大小排序,怎么办?难道还要写个冒泡算法搞一下?当然不是,java早就想好了,数组的很多方法都写进了Arrays这个类里面,其实就是一个工具包,这里面的方法都是为数组服务的,天,白打工的家伙。里面有很多常用的方法,例如sort()专门为别人家的孩子排序,toString(),算是一个小技能吧,可以直接把数组内容打印出来,打印效果就跟集合一样的,中括号加里面的元素。Equals()用来比较两个数组是否相同,必须所有元素都要相同。当然所有这些方法都是静态的,以为着你都要传数组对象作为参数,方法调用者是这个数组工具。
Array就有点鸡肋了,他其实是反射类的成员之一,专门解决数组的反射问题,比如获取数组的长度,某个脚标的元素等等,也可以用newInstance()方法构造数组。
对了,Arrays还有一个功能就是asList()就是把数组转成集合,方便操作里面的元素,当然不是那种转完数组就消失了,数组还在,他只是把引用给了一份集合,或者把基本数据类型复制给了集合,所以集合怎么变,数组还是那个数组。虽然现在越来越优先考虑使用集合等容器去存放对象,数组因为有严格的边界,对一些不希望添加元素的场合,数组还是有限选择的。数组的创建也更方便,在一些返回值为数组的场合,如果后面不再添加数据可以用数组,如果后面还有操作要添加元素的话,只能用集合了。