方法封装和数组

方法封装和数组

1.方法封装
1.1秘籍
一匡 二看 三封装
一匡 
	找核心代码
二看 
	上看找参数
    	核心代码中是否存在变量并非在和核心代码中定义,这就是外来数据/参数变量
	下看找返回
    	找出当前代码继续运行,是否有需要核心代码中数据内容
    	删除核心代码, 代码如果可以正常编译,没有返回值,如果不行,有返回
三封装
  完成代码封装操作,完成方法声明,完成文档注释
    
1.2 案例-1
1.2.1 未封装代码功能实现
/*
3. 完成30位以内的斐波那契数列
	1 1 2 3 5 8 13 21 34 55 89 144 ...
*/
public class HomeWork5 {
	public static void main(String[] args) {
		
		int count = 50;
		
		int n1 = 1;
		int n2 = 1;
		
		System.out.println(1);
		System.out.println(1);
		
		// count 是目标所需的数据总个数 。- 2是因为斐波那契数列前两位确定
		for (int i = 1; i <= count - 2; i++) {
			int temp = n2;
			n2 += n1;
			n1 = temp;
			
			System.out.println(n2);
		}
	}
}
1.2.2 方法封装分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qb7PNTVI-1666791362752)(E:/千峰教育/Day08/img/01-方法封装三部曲.png)]

1.2.3 封装之后代码结果
public class HomeWork5 {
	public static void main(String[] args) {
		
		int count = 50;
		
		fibonacci(count);
	}
	
	/**
	* 根据用户指定数据个数展示,展示对应个数斐波那契数列
	*
	* @param count 用户指定的斐波那契数列数据个数
	*/
	public static void fibonacci(int count) {
		int n1 = 1;
		int n2 = 1;
		
		System.out.println(1);
		System.out.println(1);
		
		// count 是目标所需的数据总个数 。- 2是因为斐波那契数列前两位确定
		for (int i = 1; i <= count - 2; i++) {
			int temp = n2;
			n2 += n1;
			n1 = temp;
			
			System.out.println(n2);
		}
	}
}
1.3 案例-2
1.3.1 未封装代码功能实现
/*
6. 例如:
	输入 5  8;
	计算 5 + 6 + 7 + 8;
	输出 26.
*/
public class HomeWork6 {
	public static void main(String[] args) {
		int num1 = 15;
		int num2 = 8;
		
		int sum = 0;
		
		if (num1 > num2) {
			/* 1 好懂 
			temp 临时变量
			int temp = num1;
			num1 = num2;
			num2 = temp;
			*/
			
			// 2 省空间
			num1 += num2;       // num1 = 23 num2 = 8
			num2 = num1 - num2; // num1 = 23 num2 = 15
			num1 = num1 - num2; // num1 = 8  num2 = 15
		}
		
		for (int i = num1; i <= num2; i++) {
			sum += i;
		}
		
		System.out.println(sum);
	}
}
1.3.2 方法封装分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFJPGNFm-1666791362753)(E:/千峰教育/Day08/img/02-方法封装三部曲.png)]

1.3.3 封装之后代码结果
/*
6. 例如:
	输入 5  8;
	计算 5 + 6 + 7 + 8;
	输出 26.
*/
public class Demo1 {
	public static void main(String[] args) {
		int num1 = 15;
		int num2 = 8;
		
		int sum = getSumBetweenTwoNumber(num1, num2);
		
		System.out.println(sum);
	}
	
	/**
	* 计算用户指定的两个整数之间所有数据之和
	*
	* @param num1 用户指定的第一个数据,建议 num1 < num2 
	* @param num2 用户指定的第二个数据
	* @return 两个数据之间的所有整数之和
	*/
	public static int getSumBetweenTwoNumber(int num1, int num2) {
		int sum = 0;
		
		if (num1 > num2) {
			// 2 省空间
			num1 += num2;       // num1 = 23 num2 = 8
			num2 = num1 - num2; // num1 = 23 num2 = 15
			num1 = num1 - num2; // num1 = 8  num2 = 15
		}
		
		for (int i = num1; i <= num2; i++) {
			sum += i;
		}
		
		// 复制粘贴代码,需要补充返回值操作
		return sum;
	}
}
1.4 案例-3
1.4.1 未封装代码功能实现
public class HomeWork4 {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 5;

		// 【思路 B】
		int ret = num1 - num2;
		
		// 数据处理模块
		if (ret < 0) {
			ret = -ret;
		}
		
		// 数据结果展示模块
		System.out.println(ret);		
	}
}
1.4.2 方法封装分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajMG0oCJ-1666791362754)(E:/千峰教育/Day08/img/03-方法封装三部曲.png)]

1.4.3 封装之后代码结果
public class HomeWork4 {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 5;
		
		int ret = getAbs(num1, num2);
	
		// 数据结果展示模块
		System.out.println(ret);
		
	}
	
	/**
	* 获取两数之差的绝对值
	*
	* @param num1 int 类型数据
	* @param num2 int 类型数据
	* @return 两个整数之差的绝对值
	*/
	public static int getAbs(int num1, int num2) {
		int ret = num1 - num2;
		
		return ret >= 0 ? ret : -ret;
	}
}
2.数组
2.1生活中的数组案例
停车场
2.2 Java开发中需要利用数组方式解决的的问题
如果每一个数据对应一个单独变量,会导致
			1. 代码冗余!!阿里巴巴 Java 开发规约中要求。单一方法最多 802. 针对于变量的操作相当麻烦。几乎不可能!!
			3. 代码阅读性极差!!
			4. 代码维护性极差!!!
2.3 Java 中定义数组的格式
格式:
	数据类型[] 数组名 = new 数据类型[容量];

赋值号左侧:
    数据类型:
    	明确当前数组存储的数据类型,而且严格遵守数据类型一致化要求,有且只能存储目前数据类型。
    	例如:
    		停车场 ==> 停车!!!
    		停车场 ==> 放养 不合适!!!
    		衣柜 ==> 放衣服
    		衣柜 ==> 停车 不合适!!!!
    []1. 表明当前定义的类型为数组类型
    	2. 数组名是一个【引用数据】类型
    	【名词解释,引用数据类型】
    			引用数据类型,类似与文章中的标记/引用,具备条转型和指向性,指向另一个空间,另一个数据。
    数组名:
    	1. 当前数组数据的整体名称,对应当时数组空间内容,操作数组【非常重要的名称】
    	2. 数组名是一个【引用数据类型】的变量
    
赋值号右侧:
    new1. 在内存【堆区】,申请当前数组所需的内存空间,内存空间的计算方式是【数据类型 * 容量】       	
    	【名称解释,内存堆区】
    		仓库,内存的仓库,程序可以在内存中申请一块空间用于存储开发所需的数据内容。
    	2. new 关键字会清空申请内存空间中的所有参与数据内容,打扫卫生
    	【清理数据】
    		计算机为例降低对于硬件的损坏,所有使用硬件的程序,不会清理原本在影片,内				存留有的数据内容,需要下一个使用者在使用之前打扫。
    数据类型:
    	前后呼应,要求和赋值号左侧的数据类型必须一致,严格遵守从数据类型一致化要求,明			确当前数组有且只能存储指定类型。
    
    [容量]1. 明确当前数组可以存储对应数据类型的总个数
    	2. 【重点】数组的容量一旦确定,无法修改。
2.4 Java 数组案例
	/*
		格式 :
			数据类型 [] 数组名 = new 数据类型[容量];
			
			
		定义一个 int 类型是数据, 数组容量为 10 ;
		
		数组名 arr array 简拼
		*/
		int [] arr = new int[10]; 
		
操作数组必须有下表!! 需要明确有效小标的范围和使用
【有效下标】
	1. 数组的下标从 0 开始
	2. 数组的容量 -1 结束
	例如 :
	  int [] arr = new int[10];
	  
使用格式 
	数组名【有效下标】
	例如:
		arr[5] == > 可以操作数组名为 arr 数组中小标为 5 的元素, 支持赋值和取值操作。
    
 数组代码展示: 
    	int [] arr = new int[10]; 
		/*
		
		操作使用数组中的元素,
			格式 
				数组名【下标】
				目前数组的有效下标范围是 0 - 9
				
		*/
		//给予 int 类型数组 arr 下标为0 的元素赋值 10
		arr[0] = 10;
		arr[5] = 20;
		//取值 int 类型数组 arr 下标为 0 和 5 的元素存储数据内容
		System.out.println(arr[0]);
		System.out.println(arr[5]);
		
		
2.5 数组和循环之间关系
1. 数组的下标是一个等差数列,同时数组的空间存在[连续性]
2. for 循环小括号中有三个条件,可以和数组的下标完美配合

利用循环给予 int 类型数组赋值操作

	int[] arr = new int[10];
		/*
		补充知识点:
				数组名.length == > 获取当前数组的容量
				.表示的
				length 是数组的属性
		循环从 0 开始, 小于数组的容量结束,目前情况下有执行循环过程
		进行赋值 操作
		*/
		for (int i= 0;i < arr.length; i++) {
			arr[i] = i * 5;
		}

利用循环 给予 int 类型数组取值操作

	//利用循环进行取值操作
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
2.6 数组内存分析图【重点】

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

  1. 数组操作和算法【重点】
    3.1 指定数组所有数据求和
    指定数组:
    	int[] arr = {1,3,5,4,2,6,8,9};
    	//大括号里面的数据内容就是当前数组的数据内容,不同的数据之间使用,逗号隔开;
    	//数组的容量由目前的数据个数来决定.
    
    	int[] arr1 ={1,5,4,6,9,8,15};
    		int sum = 0;
    		//利用循环遍历数组
    		for (int i = 0; i < arr1.length; i++) {
    			sum += arr[i];
    		}
    		System.out.println("数组的元素之和:" + sum);
    
    3.2 找出指定数组中所有元素最大值下标位置
    指定数组:
    	int[] arr = {1,5,6,4,8,9,10};
    假设:
        找出一参照物, 以数组中下标为 0 的元素对应数据假设为最大值。
        两两比较,如果发现存在下标对应数据大于当前存储下标数据,存储较大值下标。
    
    //定义一个变量初始化为 0 假设下标为 0 的元素为最大值【参照物】
    		int[] arr1 ={1,5,4,6,9,8,15};
    
    		int index = 0;
    		for (int i = 1;i < arr1.length; i++) {
    			// 利用 if 判断如果发现index 下表对应元素小于当前 i 元素
    			if (arr1[index] < arr[i]) {
    				index = i;
    			}
    			
    		}
    		//展示数组中的最大值下标位置
    		System.out.println("数组中最大值下标位置:" + index);
    
    3.3 数组元素内容逆序
    目标数组:
    	int[] arr1 ={1,5,4,6,9,8,15};
    	==>
         逆序操作:  {15,8,9,6,4,5,1};
    数据交换次数是数组容量 / 2 ==> arr1.length / 2
    
    	//数组元素内容逆序
    		//循环控制数据交换的次数, 数据容量 / 2 
    		int[] arr2 = {1, 3 , 5 , 7 , 9 , 2 , 4 , 6 , 8 , 10};
    		for (int i = 0;i < arr2.length / 2; i++) {
    			int temp = arr2[i];
    			arr2[i] = arr2[arr2.length - 1 - i];
    			arr2[arr2.length - 1 - i] = temp;
    		}
    		
    		for (int i = 0; i < arr2.length; i++) {
    			System.out.print(arr2[i] + " ");
    			
    		}
    

次数是数组容量 / 2 ==> arr1.length / 2


```java
	//数组元素内容逆序
		//循环控制数据交换的次数, 数据容量 / 2 
		int[] arr2 = {1, 3 , 5 , 7 , 9 , 2 , 4 , 6 , 8 , 10};
		for (int i = 0;i < arr2.length / 2; i++) {
			int temp = arr2[i];
			arr2[i] = arr2[arr2.length - 1 - i];
			arr2[arr2.length - 1 - i] = temp;
		}
		
		for (int i = 0; i < arr2.length; i++) {
			System.out.print(arr2[i] + " ");
			
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值