-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、数组
数组就是同一种类型数据的集合
格式 :元素类型[] 数组名=new 元素类型[]{元素,元素,....};
:元素类型[] 数组名=new 元素类型[元素个数或数组长度];
特例 :int[] arr=new int[3];
System.out.println(arr[3]);(错误是ArrayIndexOutOfBoundsException;)
数据操作是访问到了不存在的角
标
:
int[]arr = null;
System.out.println(arr[0]);(错误是NullPointerException)空指针异常
数组在内存中状态
二、二维数组
格式1: int[][] arr= new int[4][3];
表示定义了名称为arr的二维数组。有4个一维数组,每一个一维数组中有3个元素。
格式2:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
表示直接定义时就有了初始化值
示例:int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
以上代码在内存中的状态:
数组的应用示例:
累加二维数组中的数:
public static void main(String[] args) { int[][] arr = { { 1, 4, 5 }, { 54, 7, 8 }, { 3, 5, 78, 7 } }; int sum = 0; for (int x = 0; x < arr.length; x++) { for (int y = 0; y < arr[x].length; y++) { sum += arr[x][y]; } } System.out.println("sum=" + sum); }数组的查找:
public static void main(String[] args) { int[] arr={2,4,5,6,7}; int index=half_1(arr,4); // int index=getIndex(arr,6); System.out.println("index="+index); } public static int getIndex(int[] arr,int key){ for(int x=0;x<arr.length;x++){ if(arr[x]==key){ return x; } } return -1;//习惯没有找到的话用-1表示 } /* 折半查找:数组必须是有序的 想找的数大就向右移 */ public static int half(int[] arr,int key){ int min,max,mid; min=0; max=arr.length-1; mid=(min+max)/2; while(arr[mid]!=key){//满足条件才会循环,不满足就是找到了就执行39行直接返回mid if(arr[mid]<key) min=mid+1; else if(arr[mid]>key) max=mid-1; if(min>max) return -1; mid=(min+max)/2; } return mid; } //第二种方法 public static int half_1(int[]arr,int key){ int min=0,max=arr.length-1,mid; while(arr[min]<=arr[max]){//如果不满足小于等于就执行53行返回-1,值不存在 mid=(min+max)>>1; if(arr[mid]>key) max=mid-1; else if(arr[mid]<key) min=mid+1; else return mid; } return -1; }-----------android培训、java培训、java学习型技术博客、期待与您交流!------------