黑马程序员——java基础知识篇——>数组

-----------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个元素。
格式2int[][] 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学习型技术博客、期待与您交流!------------

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值