数组操作知识点小结

数组操作知识点小结
数组地址转移问题

​ 数组名是一个引用数据类型的变量,其中保存的是数组占用堆空间首地址,数组名之间的赋值操作,如:

int[] arr1 = new int[10];
int[] arr2 = new int[10];

arr2 = arr1;

只是将 arr1 中保存的地址赋值给 arr2 ,即:当执行 arr2 = arr1; 后,arr1与arr2指向堆空间中的同一地址(arr1中保存的数组占用堆空间首地址);

详见图例:

在这里插入图片描述

class Demo1 {
	public static void main(String[] args) {
		int[] arr1 = new int[10];
		int[] arr2 = new int[10];
		
		arr1[0] = 10;
		arr2[0] = 20;
		arr1[5] = 50;
		
		arr2 = arr1;

		arr1[0] = 30;
		arr2[0] = 100;
        System.out.print("arr1 : ");
		printArray(arr1);
        System.out.print("arr2 : ");
		printArray(arr2);
	}
	
	/**
	* 该方法对传入数组进行循环遍历并打印输出数组元素
	*
	* @param arr int类型数组
	*/
	public static void printArray(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
}
结果为:
arr1 : 100 0 0 0 0 50 0 0 0 0
arr2 : 100 0 0 0 0 50 0 0 0 0
数组作为方法的参数

​ 在main方法中 (String[] args)就是给数组作为方法参数格式,main方法需要的参数是一个String类型数组。

格式:public static 返回值类型 方法名(数据类型[] 数组名)

例1:找出元素30对应的下标位置

/*
 需求:
 	找出元素30对应的下标位置
方法分析:
	固定格式:public static 不要问
    返回值类型:int类型,返回指定元素的下标位置,没有找到返回-1
   	方法名:indexOf 获取指定元素对应下标
   	形式参数列表:
   		int[] arr:查询数据的源数组,在哪一个数组中进行查询操作,这里需要一个int类型数组
   		int find:指定在数组中查询的元素
   		(int[] arr, int find)
   
方法声明:
	public static int indexOf(int[] arr, int find)
*/
class Demo2 {
	public static void main(String[] args) {
		int[] array = {10, 8, 35, 67, 31, 25, 11, 30, 28, 99};
		int find = 30;
		
        //调用方法,传入数组名,与查询的元素find
		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 = 1; i < arr.length; i++) {
			if (find == arr[i]) {
				index = i;
				break;
			}
		}
        //返回index中保存的数据到方法外
		return index;
	}
}
结果为:index : 7

例1方法的运行内存如图所示

在这里插入图片描述

例2:

/*
 需求:
	删除数组中的指定下标的元素
	存在一个数组,数组中的元素为
		int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
		要求:
			1. 0是无效元素,仅占位使用
		需求:
			在当前数组中删除指定下标的元素
		例如:
			删除下标5的元素
			结果 {1, 3, 5, 7, 9, 13, 15, 17, 19, 0} 
			0占位!!!
 
 方法分析:
	固定格式:public static
	返回值类型:在数组中删除指定下标的元素,不需要返回值
	方法名:delete
	形式参数列表:传入一个int类型数组,int类型数据指定的下标位置index
				  (int[] arr, int index)

 【方法声明】
	public static void delete(int[] arr, int index)
*/
class Demo3 {
	public static void main(String[] args) {
		int[] array = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
		delete(array, 5);
		printArray(array);
		delete(array, 5);
		printArray(array);
		delete(array, 5);
		printArray(array);
	}
	
	/**
	* 该方法传入一个数组,然后根据传入的指定的数组下标位置index,删除该位置的元素
	*
	* @param arr int类型数组
	* @param index int类型数据 指定下标位置
	*/
	public static void delete(int[] arr, int index) {
		
		
		for (int i = index; i < arr.length - 1; i++) {
			arr[i] = arr[i + 1];
		}
		//为数组最后一位赋值0,占位使用
		arr[arr.length - 1] = 0;
	}
	
	/**
	* 该方法对传入数组进行循环遍历并打印输出数组元素
	*
	* @param arr int类型数组
	*/
	public static void printArray(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
}
结果为:
1 3 5 7 9 13 15 17 19 0
1 3 5 7 9 15 17 19  0 0
1 3 5 7 9 17 19  0  0 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值