Java每日笔记——数组操作

数组操作

1.数组地址转移问题【难点】
	public static void main(String[] args) {
		int[] arr1 = new int[10]; 
		int[] arr2 = new int[10]; 
		
		arr1[0] = 10;
		arr1[0] = 10;
		
		System.out.println(arr1[0]);
		System.out.println(arr2[0]);
		
		arr2[5] = 50;
		
		arr2 = arr1;
		arr1[0] = 30;
		arr2[0] = 100;
		
		System.out.println(arr1[0]);
		System.out.println(arr2[0]);
		System.out.println(arr1[5]);
	
	}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BkC68ahd-1587732197463)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200424181922518.png)]

2.
		int[] arr1 = new int[10]; 
		int[] arr2 = new int[10]; 
		
		arr1[0] = 10;
		arr1[0] = 10;
		arr2 = arr1;
		
		System.out.println(arr1[0]);
		System.out.println(arr2[0]);
		
		赋值操作完成的是对于元素直接内容的转换,不涉及数组地址转移
2.数组作为方法的参数
2.1还是比葫芦画瓢
public static void main(String[] args) {

}
/*
(String[] args)
	String[] args 就是给数组作为方法参数格式,这里main方法需要的参数是一个String 类型数据
	
格式:
	public static 返回值类型 方法名(数据类型[] 数组参数名)
	
数组是可以作为方法的返回值
	but
	在我没有演示,讲解素族作为返回值使用的情况下,任何人不得使用数组作为返回值
	
*/
2.2数组作为参数
/*
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
元素 == 30

方法分析
	固定格式
		public static 不要问
	返回值类型
		void:
			没有返回值,功能变成数据直接打印,没有返回到方法外,这是一个黑盒方法
			黑盒方法是数据传入之后,没有任何的返回
		int:
			返回制定元素下标位置,没有找到返回-1
	方法名:
		indexOf
		获取制定元素对应下标
	形式参数列表:
		int[] arr:
			查询数据的源数组,在哪一个数组汇总进行查询操作
		int find:
			指定数组中查询的元素
		(int[] arr, int find)
		
方法声明:
	public static int indexOf(int[] arr, int find)
*/
2.3方法实现和文档注释
/**
* 指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于8,没有找到返回-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++) {
			if (arr[i] == 5) {
			index = i;
			break;
			}
	}
    return index;
}
2.4方法验证和传参方式
class Demo2{
	public static void main(String[] args) {	
		int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		int find = 30;
		int index = indexOf(arr, find);
		
		if (index >= 0) {
			System.out.println("index : " + index);
		} else {
			System.out.println("Not find");
		}
	}
	
	/**
	* 指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于8,没有找到返回-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++) {
			if (arr[i] == find) {
			index = i;
			break;
			}
		}
		// 返回值index中保存的数据
		return index;
	}
}	
2.5方法运行内存图【难点】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pz5EIy3W-1587732197466)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200424182633025.png)]

2.6总结
1.数组作为方法的参数的固定格式
	(数组类型【】 数组参数名)
2.数组作为方法的时间参数的固定格式
	(数组名)
3.数组名作为方法的参数,实际传递的是数组空间首地址,就是和数组地址转移问题是一致的
4.方法执行需要参数,如果没有给予对应格式的实际参数,直接报错
2.7练习
2.7.1保存数据到数组中
/*
需求
	完成一个方法,给int类型数组保存的元素进行赋值操作,所有元素内容全部赋值100
	
方法分析:
	固定格式:
		public static
	返回值类型:
		void 没有返回值
	方法名:
		assignIntArray
		赋值int类型数组
	形式参数列表:
		int[] arr 这里需要一个int类型数组
		
方法声明:
	 public static void assignIntArray(int[] arr) {
	 
	 }		
*/

/*
*
* 传入一个int类型数组,把当前int类型数组中所有的元素全部赋值为100
*
* @param arr int类型数组*/
public static void assignIntArray(int[] arr) {
	 
  for (int i = 0; i < arr.length; i++) {
			arr[i] = 100;
}
class Demo3 {
	public static void main(String[] args) {
		int [] intArrat = new int[10];
		
		for (int i = 0; i < intArrat.length; i++) {
			System.out.print(intArrat[i] + " ");
		}
		System.out.println();
		
		assignIntArray(intArrat);
		for (int i = 0; i < intArrat.length; i++) {
			System.out.print(intArrat[i] + " ");
			System.out.print(intArrat[i] + " ");
		}
	
		System.out.println();
	
	}
	/**
	*
	* 传入一个int类型数组,把当前int类型数组中所有的元素全部赋值为100
	*
	* @param arr int类型数组
	*/
	
	public static void assignIntArray(int[] arr) {
	 
		for (int i = 0; i < arr.length; i++) {
			arr[i] = 100;
		}
	}
}
2.7.2使用A数据,替换指定数组中B数据
/*
需求:
	使用A数据,替换指定数组中B数据
	例如:
		int[] arr = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
		替换所有元素值 == 5 ==> 100
		结果Result
		int[] arr = {1, 2, 3, 4, 100, 1, 2, 3, 4, 100}
		
方法分析:
	固定格式:
		public static
	返回类型:
		void
	方法名:
		replace
		这里需要三个参数:
			a.指定的数组 int[] arr
			b.A数据 int oldNUM
			c.B数据 int newNum
			(int[] arr, int oldNum, int newNUm);
			
方法声明:
	public static void repleace(int[] arr, oldNum, int newNum)
	*/

	/**
	* 使用newNum数据替换指定数组arr中,oldNum数据
	*
	* @param arr    指定的int类型数据
	* @param oldNum 需要被替换的数据,int类型
	* @param newNum 替换使用的新数据,int类型
	*/
	

	public static void replace(int[] arr, int oldNum, int newNum) {
		for (int i = 0; i < arr.length; i++) { 
			
			if (oldNum == arr[i]) {
				arr[i] = newNum;
			}
		}
	}


class Demo4{
	public static void main(String[] args) { 
		int[] arr= {1, 11, 111, 1111, 11111, 1,11, 111, 1111, 11111};
		replace(arr, 11, 20);
		for (int i = 0; i < arr.length; i++) { 
			System.out.print(arr[i] + " ");
		}
		
	}

	/**
	* 使用newNum数据替换指定数组arr中,oldNum数据
	*
	* @param arr    指定的int类型数据
	* @param oldNum 需要被替换的数据,int类型
	* @param newNum 替换使用的新数据,int类型
	*/
	
	public static void replace(int[] arr, int oldNum, int newNum) {
		for (int i = 0; i < arr.length; i++) { 
			
			if (oldNum == arr[i]) {
				arr[i] = newNum;
			}
		}
	}
}
2.7.3逆序数组
/*
需求:
	存在一个int类型数组,使用方法逆序数组中的元素
	例如:
		int[] arr = 
		{1, 2, 3, 4, 5};
		执行之后
		{5. 4, 3, 2, 1};
		
方法分析:
	固定格式:
		public static
	返回类型:
		void
	方法名:
		reverse
	形式参数列表:
		int[] arr 这里需要一个int类型数组
		
方法声明:
	public static void reverse(int[] arr)	 		
    */

    /**
    * 数组逆序
    *
    * @param arr 需要被逆序的int类型数组
    */
	public staitc void reverse(int[] arr) {
        for (inti = 0; i < arr.length / 2; i++) {
            inttemp = arr[i]; 
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = temp;
			/*
			前提:
				{11, 13, 25, 68, 90};
			1.
				i = 0;
				temp = arr[0]; temp ==> 11
				arr[0] = arr[arr.length - 1 - i]; arr[4]==> 90 
				arr[0] = 90arr[arr.length - 1 - i] ==> arr[4] = 11;2i = 1;
				temp = arr[1] temp = 13arr[1] = arr[5 - 1 - 1]; 
				arr[1]  = 68arr[3] = 68arr[3] = temp; 
				arr[3] ==> 13
			*/
        }
    }
class Demo5{
	public static void main(String[] args) { 
		int[] arr= {1, 2, 3, 4, 5};
		rever(arr);
		for (int i=0; i < arr.length; i++) {
			System.out.print(arr[i] +" ");
		}
		System.out.println();
	}
	/**
	* 数组逆序
	*
	* @param arr 需要被逆序的int类型数组
	*/
	
	public static void rever(int[] arr) {
		for (int i = 0; i < arr.length / 2; i++) { 
			int temp = arr[i];
			arr[i] = arr[arr.length - 1 - i]; 
			arr[arr.length - 1 - i] = temp;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值