`
鬼大来晚了
  • 浏览: 66229 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java学习笔记——数组

    博客分类:
  • Java
 
阅读更多
    现在已经很少用到数组这一类型了,大多是后我们都会选择使用List。相对于List,数据在效率上有一定的优势,但是灵活性不够。下面总结一些数组的基本知识。
1、数组和其他类的容器之间的区别有三方面:效率、类型和保存基本类型的能力,数组能够保存固定长度的数据。
2、[]是访问数组对象的唯一方法,只读成员length是数组对象的一部分,标识数组的大小,并不是实际保存的元素个数。
3、数组与泛型不能很好的结合,不可以实例化具有参数化类型的数组:
Peel<Bandana>[] peels=new Peel<Banana>[10]//不合法的

4、数组的使用功能,主要包括数组一些常用的方法
(1)Arrays.fill():用同一个值填充数组的各个位置,而针对对象而言,就是复制同一个引用进行填充。有两个方法:通常产生相同的一组数据,用来测试
Arrays.fill(array,value);array 为一个数组变量,value是一个值,该值的类型为array数组元素的类型,该方法将给array数组的每一个元素赋值value;

Arrays.fill(array,startIndex,endIndex,value);第一个与第四个参数与前一用法相同,startIndex与endIndex为整数类型,并且0<startIndex<endIndex<array.length;该方法为下标大于startindex并且小于endindex的array数组元素赋值value;

(2)复制数组,用System.arraycopy()这种方法比用for循环复制要快得多。java API中由如下描述:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array.

方法中的四个参数:源数组、标识从源数组什么位置开始复制的偏移量、目标数组、标识从目标数组的什么位置开始复制的偏移量、以及要复制的元素个数。数组的越界将会导致异常
(3)数组的比较:Arrays提供了equals()方法,用来比较整个数组。数组相等的条件:元素个数相等,对应位置的元素也相等。
注意一下两种方式的不同:
array1.equals(array2);
Arrays.equals(array1, array2);


array1.equals(array2) is the same as array1 == array2, i.e. is it the same array. As @alf points out it's not what most people expect.
Arrays.equals(array1, array2) compares the contents of the arrays.
(4)数组元素的比较:实现java.lang.Comparable接口,使得类具有天生的比较能力。
之后就可以用Arrays.sort()对数组进行排序了。
(5)在已排序的数组中查找:Arrays.binarySearch(),如果找到了目标,返回值大于或等于0.否则它产生负返回值,标识若要保持数组的排序状态比目标元素应该插入的位置,计算方式为 : -(插入点)-1;
其中,插入点是指第一个大于查找对象的元素在数组中的位置,如果数组中所有的元素都小于要查找的对象,插入点就等于a.size().
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics