javase(4)_数组

一、数组概述

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

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

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

二、一维数组定义

实例:

int[] a= new int[2];      //
int[] b= new int[]{1,2,3};  //
int[] c={1,2,3};         //
int[] d=new int[2]{1,2};   //

int[] a=new int[2];
int b=a[2];            //对,有默认值
int b=a[3];            //运行期错误,编译无问题。

int[]a;
int k = a[2];          //编译报错,未初始化,只是开辟了栈内存

Person[] p=new Person[5];   p[0].age;    //运行期空指针异常

三、数组长度

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

四、二维数组定义

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

实例

int a[][]={{1,2},{2,4},{2,5}}   //
int a[][]=new a[3][]       //二维变长数组
a[0]=new int[10];
a[1]=new int[2];
a[2]={1,2};             //报错,此处和一维数组有区别
int a[][]=new a[][3];       //

五、数组实例

/*取最值*/
int[] array = new int[]{2,4,5,1,3,9};
int max=0;
for(int i=1;i<array.length;i++){
  if(array[max]<array[i]){
    max=i;
  }
}
System.out.println(array[max]);

/*选择排序*/
for(int i=0;i<array.length-1;i++){
  int min=i;
  for(int j=i+1;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=0;i<array.length-1;i++){
  for(int j=0;j<array.length-i-1;j++){
    if(array[j]>array[j+1]){
      array[j]=array[j]^array[j+1];
      array[j+1]=array[j]^array[j+1];
      array[j]=array[j]^array[j+1];
    }
  }
}

/*反转数组*/
public static void reverseArray(int[] arr){
  for(int start=0,end=arr.length-1; start<end ; start++,end--){
    int temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
  }
}

/*二分查找法*/
public static int getArrayIndex(int target){
  int num=0;
  int left=0;
  int last=array.length-1;
  int middle = (left+last)>>1;
  while(array[middle]!=target){    
    if(array[middle]>target){
      last=middle-1;
    }else{
      left=middle+1;
    }  
    middle=(left+last)>>1;
    num++;
  }
  return middle;
}

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

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

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

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


原文地址:https://www.cnblogs.com/wangweiNB/p/4778374.html