数组的总结

             数组是引用数据类型,数组引用变量只是一个引用。


             数组元素和数组变量的存放位置是不同的。

             数组元素存放在堆内存中,而数组变量存放在栈内存中。

数组的定义的时候,先在栈内存中分配空间。如果要实例化数组,数组中的元素

        会在堆中分配内存。只有数组引用有效的数组元素,才可以访问数组元素。

       如果堆中的数组没有被引用了,就会被系统垃圾回收。

 

          引用类型数组的初始化和基本数据类型数组初始化格式一样

如:Person [] student = new Person[2];   int [] arr = new int [2];


          多维数组可以不确定列的值,也可以列的个数不一样,但是必须确定行的值。

 

    数组的常用工具类


     int binarySearch(type[] a , type key )  

二分法查询,通过key元素值来查找数组a中的索引。

方法必须先按升序存放,有返回结果,无返回负数。

  如果要在数组中的指定范围来查询,可以通过

   int binarySearch( type [] a , int fromIndex , int toIndex , type key)方法


   Type [] copyof( type[] original , int newLength ) 

复制指定的数组,如果不够,可以添加0来填充。也可以复制指定数组的范围到

   新的数组中 如:type [] copyOfRange(type [] original , int from , int to)


   Boolean equals(type[] a , type[] a2)  

比较两个数组是否相等


    Void fill(type [] a , type val)  

用 val把数组中的每一个元素赋值  就是用val 来填充数组


   Void sort(type[] a)数组的升序排序(使用快速排序完成) 

  也可以指定范围来排序,同理上面。


    String toString(type [] a )把数组转化为字符串,按下标来组成字符串

 

  在System类中arraycopy方法可以拷贝一个数组到另一个数组

      Void arraycopy(Object src,  int srcPos,  Object dest,  int destPos,   int length)

     将指定源数组中的数组从指定位置复制到目标数组的指定位置。

 

    数组排序(具体排序代码看数组排序文章)

冒泡排序 (两两比较然后交换值,把大的数往后排)

        

android将数组保存到SharedPreference中 数组保存在哪_数组总结

选择排序  (找到一次遍历中的最小值的位置,与遍历中的第一个交换值)

 

android将数组保存到SharedPreference中 数组保存在哪_快速排序_02

快速排序   (取数组中的一个key值,遍历数组把数组分为大于key,和小于key的两组,

         继续把左边排序,然后右边排序)

     

android将数组保存到SharedPreference中 数组保存在哪_数组总结_03

 

android将数组保存到SharedPreference中 数组保存在哪_快速排序_04

插入排序(在前两个数组元素有序的数组中,那第三个数组元素和前两数比较,然后插入其中。

          第四个元素与前三个数比较,以此类推)

  

android将数组保存到SharedPreference中 数组保存在哪_快速排序_05

 

    数组的应用

 

一维数组

成绩的排序,学号的排序

多维数组

五指棋 ,连连看 , 俄罗斯方块等

 

 

数组的特殊

数组与其他容器之间的区别

考虑的因素:效率 、类型、保存的能力

优点: 存储高,对数组的查找访问快

缺点: 删除慢,大小不能变,一出界就有异常

可以返回一个数组,只要把方法中的返回值得类型改为数组的类型