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<a.length()-1;x++ ){
  for(int y=0;y<a.length()-1-x;y++){
    if(a[y<a[y+1]]){
     int num=a[y];
     a][y]=a[y+1];
    a[y+1]=num;
    }
  }
}
  • 选择排序(也成为快速排序)
    原理就是每次查找出一最大的数进行交换,交换的次数少效率高,外轮使用n-1控制,交换的位置 固定在外轮-1的位置. 通过内轮 判断出符合条件的数字位置在哪,然后跟该轮最后的数字进行交换. 每次交换的位置都会少一位,最终素有的数字就都能比较出来了(真TM难记)
int   array={64,4,25,1,3,15};
int index;
for(int i=0;i<array.length-1;i++){
   index=0;
   for(int j=1;j<=array.length-1-i;j++){
   if(array[j]>array[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个数字交换,结束的位置与轮数有关。需要重点掌握

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值