Java Day12

定义数组和使用
数组
一组数组相当于酒店的一个楼层,首地址就是楼层数,下表就是房间号

定义数组:
int[] array = new int[10];

需要操作数组中哪一个元素,这里需要使用数组的【下标】
计算机内数据的开头都是从0开始,数组容量为10的情况
有效下标的范围
0 ~ 9
0 ~ 数组容量 Capacity - 1

操作格式:
数组名[有效下标]

在这里插入图片描述

/* 演示数组的定义和使用 */
class Demo2 {
	public static void main(String[] args) {
		/* 这里定义一个int类型的数组,数组的容量为10 */
		int[] array = new int[10];
		
		/*
		给数组中下标为0的元素赋值
		格式: 数组名[有效下标]
		*/
		array[0] = 10;
		
		/*
		给数组中下标为5的元素赋值
		*/
		array[5] = 20;
		
		/*
		给数组下标为10的元素赋值30
		10 已经超出了有效下标范围 0 ~ 9
		
		array[10] = 30;
		*/
		/*
		Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
			at Demo2.main(Demo2.java:22)	
		ArrayIndexOutOfBoundsException	数组下标越界异常
		*/
		
		/*
		给数组中下标为-1的元素赋值为20
		-1 已经超出了有效下标范围 0 ~ 9
		*/
		// array[-1] = 20;
		/*
		java.lang.ArrayIndexOutOfBoundsException: -1
		*/
		
		/*
		取出数组中下标为0和下标为5的元素内容
		*/
		System.out.println("array[0] : " + array[0]);
		System.out.println("array[5] : " + array[5]);
		// System.out.println("array[4] : " + array[4]);
		
	}
}

数组关系极为密切是for循环!!!

class Demo3 {
	public static void main(String[] args) {
		/* 定义一个int类型数组 容量为10 */
		int[] arr = new int[10];
		
		/*
		数组名.length 
			获取当前数组的【容量 Capacity】,获取数组的【属性】
		*/
		for (int i = 0; i < arr.length; i++) {
			// 给数组中每一个元素赋值操作 
			arr[i] = i + 1;
		}
		
        // 利用循环展示数据
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

数组地址转移问题

在这里插入图片描述

public static void main(String[] args) {
    int[] arr1 = new int[10];
    int[] arr2 = new int[10];
    
    arr1[0] = 10;
    arr2[0] = 20;
    
    System.out.println("arr1[0]:" + arr1[0]);
    System.out.println("arr2[0]:" + arr2[0]);
    
    arr1[5] = 50;
    
    arr2 = arr1;
    
    arr1[0] = 30;
    arr2[0] = 100;
    
    System.out.println("arr1[0]:" + arr1[0]);
    System.out.println("arr2[0]:" + arr2[0]);
    System.out.println("arr2[5]:" + arr2[5]);
    /*
    1. 报错
    2. 30 30 50 
    3. 100 100 50 true
    4. 30 100 50
    5. 50 100 50
    6. 30 100 0
    */
}
class Demo2 {
	public static void main(String[] args) {
		int[] array = {10, 8, 35, 67, 31, 25, 11, 30, 28, 99};
		int find = 13;
		
		// 调用的方法需要数组作为方法的参数,
		// 这里传入【数组名】
		int index = indexOf(array, find);
		
		if (index >= 0) {
			System.out.println("index : " + index);
		} else {
			System.out.println("Not Found!");
		}
	}	
	
	/**
	* 在指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于0,没有找到
	* 返回-1
	*
	* @param arr  查询数据的源数据数组,int类型数组
	* @param find 指定在数组中查询的数据,也是对应int类型
	* @return 找到指定元素,返回值大于等于0,否则返回-1
	*/
	public static int indexOf(int[] arr, int find) {
		// 假设查询的数据不存在
		int index = -1;
		
		// 遍历整个数组
		for (int i = 0; i < arr.length; i++) {
			// 发现数组中下标为i的元素和find一致,找到内容,保存下标
			if (find == arr[i]) {
				index = i;
				// 终止循环
				break;
			}
		}
		
		// 返回index中保存的数据
		return index;
	}
}

总结

  1. 数组作为方法参数的固定格式
    (数据类型[] 数组参数名)
  2. 数组作为方法的实际参数的固定格式
    (数组名)
  3. 数组名作为方法的参数,实际传递的是数组空间首地址,就是和数组地址转移问题是一致的
  4. 方法执行需要参数,如果没有给予对应格式的实际参数,直接报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值