Java从入门到精通 第六章 数组

- 数组
数组作为对象的一种同样存储在堆中。作为一种存储基础数据类型的容器。还是蛮重要,虽然与集合相比 存在着长度固定的缺点,日常开发用到不多。但是作为java的基础知识点,重新温故下 还是蛮有必要的。

- 数组的定义
指通过声明数据类型和大小 来标识一组具有相同类型的容器.数组分为一维数组及二维数组。

- 一维数组数组的使用

  • 数组的声明实例化

需要声明数组的2个基本元素:存储数据类型及存储数据的个数。
数组可以先声明 后实例化,也可以声明的同时初始化。以下是一维数组的常见使用方式。
String[] str=new String[3]; str={1,2,3}; String str=new String[]{1,2,3}; String str[]=new String[3].

  • 数组的使用
    获取数组的某个元素 例子如下str[0],str[1],str[2];
    遍历数组 for(int i=0;str.length();i++)
    需要注意的是数据与List集合一样,下标都是从0开始的

二维数组
二维数组相比一维数组 ,就是一维数组中的每个元素中,再放入一组一维数组,访问类似于数学概念中的x ,y坐标。x作为外面一维数组的 位置,y作为里面一维数组的位置。

  • 二维数组的声明 初始化(整形数组中默认初始值为0)
    int[][] arrays=new int[1][2];
    arrays[0]={1,2};
    int arrays[][]=new int[1][2];
    int arrays[][]={{1,2}};

数组常用api方法
数组中大多数静态方法是有Arrays这个类提供的

  1. 数组填充Arrays.fill(int[] a,int value); 该方法可以通过各种重载形式将数据填充到任意类型的数组元素中
  2. 数组排序:Arrays.sort(object) 默认按照自小而大 对任意类型数组进行排序
  3. 数组复制:Arrays.copy(object)(这个方法老是容易忘,记牢 别忘记).
  4. 数组查询:Arrays.binarySearch(Object[] a,Obkect key),采用二分查找法,查询key值在a数组中的位置,不存在返回-1.类似字符串中的indexOf方法.

数组排序
虽然数组存在Arrays.sort可以对数组元素进行排序,但是默认只能从小到大排序。同时冒泡排序,选择排序,快速排序 作为java中常用的排序方法 还是需要重点掌握的.所以单独拿出来记录下(容易忘,原理知道,实际写的时候只记住冒泡排序了)

  • 冒泡排序
    冒泡排序的原理是按照相邻2个元素比较,结束为止为n-1-第几轮.如果满足条件则交换元素位置,循环n-1伦。
int[]  a=new int[]{3,4,5,1,9,8};
for(int x=0;x
  • 选择排序(也成为快速排序)
    原理就是每次查找出一最大的数进行交换,交换的次数少效率高,外轮使用n-1控制,交换的位置 固定在外轮-1的位置. 通过内轮 判断出符合条件的数字位置在哪,然后跟该轮最后的数字进行交换. 每次交换的位置都会少一位,最终素有的数字就都能比较出来了(真TM难记)
int   array={64,4,25,1,3,15};
int index;
for(int i=0;iarray[index]){
    index=j;
   }
   }
   int temp=array[array.length-i-1];
   array[array.length-i-1]=array[temp];
   array[temp]=array[array.length-i-1;
}

总结
数组无非就是熟悉一维数组及二维数组的声明 初始化,防止出现声明及初始化写法上的问题。同时知道数组同样作为对象存储在堆中。同时对于数组一些常用的api如复制 循环遍历 排序 填充及查询有所了解,能在用到的时候想到。最后也就是最重要的2种常用排序方法的写法 冒泡排序及直接排序(也称为选择排序),选择排序是每次找出最大或者最小的数与该轮 最后一个数字进行交换。这样交换的次数少 效率高。而冒泡排序是相领2个数字交换,结束的位置与轮数有关。需要重点掌握

你可能感兴趣的:(Java)