一、数组概述

数组可以看成是多个相同类型数据组合,对这些数据的统一管理.

数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量.

数组中的元素可以是任意类型,包括基本类型和引用类型,有默认初始值(按照成员变量的规则).

二、一维数组定义

实例:

int[] a= new int[];      //对
int[] b= new int[]{,,}; //对
int[] c={,,}; //对
int[] d=new int[]{,}; //错 int[] a=new int[];
int b=a[]; //对,有默认值
int b=a[]; //运行期错误,编译无问题。 int[]a;
int k = a[]; //编译报错,未初始化,只是开辟了栈内存 Person[] p=new Person[]; p[].age; //运行期空指针异常

三、数组长度

java中每个数组都有一个public final int 的length属性,表示数组的长度,一旦确定就不能改变大小.

四、二维数组定义

二维数组可以看成数组的数组.

实例

int a[][]={{,},{,},{,}}   //对
int a[][]=new a[][]      //二维变长数组
a[]=new int[];
a[]=new int[];
a[]={,};          //报错,此处和一维数组有区别
int a[][]=new a[][];       //错

五、数组实例

/*取最值*/
int[] array = new int[]{,,,,,};
int max=;
for(int i=;i<array.length;i++){
  if(array[max]<array[i]){
    max=i;
  }
}
System.out.println(array[max]); /*选择排序*/
for(int i=;i<array.length-;i++){
  int min=i;
  for(int j=i+;j<array.length;j++){
    if(array[min]>array[j]){
      min=j;
    }
  }
  if(min != i){
    array[i] = array[i]^array[min];
    array[min] = array[i]^array[min];
    array[i] = array[i]^array[min];
  }
} /*冒泡排序法*/
for(int i=;i<array.length-;i++){
  for(int j=;j<array.length-i-;j++){
    if(array[j]>array[j+]){
      array[j]=array[j]^array[j+];
      array[j+]=array[j]^array[j+];
      array[j]=array[j]^array[j+];
    }
  }
} /*反转数组*/
public static void reverseArray(int[] arr){
  for(int start=,end=arr.length-; start<end ; start++,end--){
    int temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
  }
} /*二分查找法*/
public static int getArrayIndex(int target){
  int num=;
  int left=;
  int last=array.length-;
  int middle = (left+last)>>;
  while(array[middle]!=target){
    if(array[middle]>target){
      last=middle-;
    }else{
      left=middle+;
    }  
    middle=(left+last)>>;
    num++;
  }
  return middle;
}

ps:面试题,插入一个数,保持数组排序,插入的位置?

二分查找条件改为:while(array[left]<=array[last]),插入的位置:left+1

六、实际使用数组时,使用java.util.Arrays类和apache.long.ArrayUtils类中提供的数组方法。

ps(常用的数组方法): http://www.iteye.com/news/28296

												

最新文章

  1. SharedPreferences详解(三)——存取图片
  2. 【每日scrum】NO.5
  3. Python Telnet弱口令爆破脚本及遇到的错误与问题
  4. HUD-4602 Partition 排列
  5. Java用OpenOffice将word转换为PDF
  6. 设置PlaceHolder的颜色
  7. bootstrap-datepicker的简单使用
  8. 实现mysql在windows server 2008下自动备份
  9. Spring配置集群定时任务
  10. [COGS2701]:动态树
  11. postman 简单教程-实现简单的接口测试
  12. Mac 安装配置Jenkins+github完成项目构建
  13. Elasticsearch基础教程分享
  14. maven配置阿里云中央仓库
  15. #195 game(动态规划+二分)
  16. hibernate的学习周
  17. HMM拓扑与转移模型
  18. Mybatis 传递多个参数
  19. 算法基础_递归_给定一个数字n,打印出所有的划分等式
  20. 通过 sysprocesses 简单查询死锁及解决死锁办法

热门文章

  1. memcached连接说明
  2. c# UserControl 如何在父窗口中显示Scroll
  3. iOS 7 隐藏特性
  4. APP上传
  5. 学习Mahout(二)
  6. c3p0连接池的简单使用和测试1
  7. hdu 6299 Balanced Sequence( 2018 Multi-University Training Contest 1 )
  8. python 对mongdb的简单操作
  9. centos 无界面 服务器 安装chrome部署chromedriver
  10. Hive_Hive的管理_web界面方式