一:动态初始化
初始化时只指定数组长度,由系统为数组分配初始值。
二:静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度
案例如下
public class ArrayDemo{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int []arr = new int[3];//动态初始化
int []arr2 = {1,4,54,23};//静态初始化
int []arr4 =new int[]{1,4,54,23};//静态初始化
int []arr3 = arr2;
reserve(arr2);
show(arr2);
Arrays.sort(arr2);//从小到大排序
show(arr2);
System.out.println(find(arr2,54,0,arr2.length-1));//-1
System.out.println(find1(arr2,231));//-1
}
//逆序
public static void reserve(int []a){
int temp;
for(int i = 0;i<a.length/2;i++){
temp = a[i];
a[i] = a[a.length-1-i];
a[a.length-1-i] = temp;
}
}
//输出
public static void show(int []a){
for(int i = 0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
//递归的二分查找
public static int find(int []a,int c,int low,int high){
int middle = (low+high)/2;
if(low<=high){
if(a[middle] == c){
return middle;
}else if(c>a[middle]){
return find(a,c,middle+1,high);
}else{
return find(a,c,low,middle-1);
}
}
return -1;
}
//递推的二分查找
public static int find1(int []a,int c){
int low = 0;
int high = a.length-1;
int middle;
while(low<=high){
middle = (low+high)/2;
if(a[middle] == c){
return middle;
}else if(c>a[middle]){
low = middle+1;
}else{
high = middle-1;
}
}
return -1;
}
}