08、方法的封装、数组

08_方法的封装、数组

1、方法的封装
1.1 方法封装三部曲
一框 二看 三封装

	一框
  		找核心代码
	二看
   		上看参数
   		下看找返回
	三封装 
		完成方法封装操作,完成方法声明,完成文档注释
1.2 案例
1.2.1 未封装代码功能实现
/*例如:
输入 5 8;
计算 5 + 6 + 7 + 8;
输出 26.
*/
import java.util.Scanner;

public class Demo1 {
	
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);
	
		System.out.println("请输入第一个数:");
	
		int num1 = sc.nextInt();
	
		System.out.println("请输入第二个数:");
	
		int num2 = sc.nextInt();
		
		int sum = 0;
		
		//对键入的两个整数判断大小
		if (num1 > num2) {
			/*
			定义一个中间变量
			int temp = num1;
			num1 = num2;
			num2 = temp;
			*/
			
			//省空间
			num1 = num1 + num2;
			num2 = num1 - num2;
			num1 = num1 - num2;
		}
		for (int i = num1; i <= num2; i++) {
			sum += i;
		}
			
		System.out.println(sum);
	}

}
1.2.2 方法封装分析

方法封装三部曲

1.2.3 方法封装之后代码实现
/*例如:
输入 5 8;
计算 5 + 6 + 7 + 8;
输出 26.
*/
import java.util.Scanner;

public class Demo1 {
	
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);
	
		System.out.println("请输入第一个数:");
	
		int num1 = sc.nextInt();
	
		System.out.println("请输入第二个数:");
	
		int num2 = sc.nextInt();
			
		System.out.printf("%d~%d之间的所有数的和:%d",num1,num2,sumBetweenTwoNumbers(num1,num2));
	}
	
	public static int sumBetweenTwoNumbers(int num1,int num2) {
		int sum = 0;
		
		//对键入的两个整数判断大小
		if (num1 > num2) {
			/*
			定义一个中间变量
			int temp = num1;
			num1 = num2;
			num2 = temp;
			*/
			
			//省空间
			num1 = num1 + num2;
			num2 = num1 - num2;
			num1 = num1 - num2;
		}
		for (int i = num1; i <= num2; i++) {
			sum += i;
		}
		
		return sum;
	}

}

运行结果如下图
方法封装

2、数组
2.1 Java中数组的定义格式
格式1:
	数据类型[] 数组名 = new 数据类型[容量];

赋值号左侧:
	数据类型:
		定义当前数组存储的数据类型,而且严格遵守数据类型一致化要求,有且只能存储目前数据类型。
	
	[]:
		1、表明当前定义的类型为数组类型
	
	数组名:
		1、数组名是一个【引用数据类型】的变量。
		【名词解释 引用数据类型】
			引用数据类型,具备跳转性和指向性(相当于C语言中的指针),指向一个对象的内存地址。
		2、存储指向当前数组第一个元素的内存地址。

赋值号右侧:
	new:
		Java关键字
		1、在内存的【堆区】,申请当前数组所需的内存空间。
			内存空间的计算方式:数据类型的字节长度 * 容量(数组长度)
			【名词解释 内存堆区】
				内存的仓库,程序可以在内存中申请一块内存空间用于存储开发所需的数据内容。
		2、清除申请到的内存空间中之前残余的数据。

	数据类型:
		要求和赋值号左侧的数据类型必须保持一致,严格遵从数据类型一致化要求,明确当前数组有且只能存储的数据类型。

	[容量]:
		1、定义当前数组的长度,即当前数组可以存储的对应数据类型的数据个数。
		2、数组的容量一旦确定,无法修改。
格式2:
	数据类型[] 数组名 = {数据1,数据2,……}

赋值号左侧:
	数据类型:
		定义当前数组存储的数据类型,而且严格遵守数据类型一致化要求,有且只能存储目前数据类型。
	
	[]:
		1、表明当前定义的类型为数组类型
	
	数组名:
		1、数组名是一个【引用数据类型】的变量。
		2、存储指向当前数组第一个元素的内存地址。

赋值号右侧:
	{}:
		1、大括号里面的数据内容就是当前数组的数据内容,不同的数据之间使用逗号【,】隔开。
		2、数组的容量由目前的数据个数决定。
2.2 Java数组案例
/*
格式:
	数据类型[] 数组名 = new 数据类型[容量];
		
定义数组存储的数据类型为 int 类型 数组容量为 10
数组名 arr array的简写
*/
int[] arr = new int[10];

操作数组必须使用下标,需要明确有效下标的范围
【有效下标范围】
	1、数组的下标从 0 开始
	2、到 数组的容量 - 1 结束

使用格式:数组名[有效下标]
//数组案例
public class Demo2 {
	public static void main(String[] args) {
		/*
		格式:
			数据类型[] 数组名 = new 数据类型[容量];
		
		定义数组存储的数据类型为 int 类型 数组容量为 10
		数组名 arr array的简写
		*/
		int[] arr = new int[10];
		
		/*
		操作使用数组中的元素 需要下标支持
		格式:
			数组名[下标]
			目前数组的有效下标范围是 0 ~ 9
		*/
		
		//给予 int 类型数组 arr 下标为 0 的元素赋值 10
		arr[0] = 10;
		
		//给予 int 类型数组 arr 下标为 9 的元素赋值 20
		arr[9] = 20;
		
		//取值 int 类型数组 arr 下标为 0 的元素存储的数据内容
		System.out.println(arr[0]);
		
		//取值 int 类型数组 arr 下标为 9 的元素存储的数据内容
		System.out.println(arr[9]);
	}
}

运行结果如下图
数组赋值

2.3 数组和循环之间的关系

数组的下标范围是一个等差数列,同时数组在内存中的存储地址具有连续性。

//数组和循环配合使用
public class Demo3 {
	public static void main(String[] args) {
		/*
		定义一个 int 类型的数组 数组容量为 10 数组名为 arr
		格式1:
			数据类型[] 数组名 = new 数据类型[容量];
		*/
		int[] arr = new int[10];
		
		/*
		补充:
			数组名.length  获取当前数组的容量
			length 是数组的属性
			
			数组最大下标为 数组名.length - 1
		*/
		/*
		使用循环对数组进行赋值操作
		*/
		for (int i = 0; i < arr.length; i++) {
			arr[i] = i * 5;
		}
		
		/*
		使用循环对数组进行取值操作
		*/
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

运行结果如下图
for循环为数组赋值

2.4 数组内存分析图

数组内存分析

3、数组操作和算法
3.1 指定数组所有数据求和
//指定数组的所有数据求和
public class Demo4 {
	public static void main(String[] args) {
		/*
		数组定义 
		格式2:
			数据类型[] 数组名 = {数据1,数据2……}
			
			{} 里面的数据内容就是当前数组的数据内容 不同的数据之间使用 , 隔开
			数组的容量由目前的数据个数决定
		*/
		int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		
		int sum = 0;
		
		//利用循环遍历整个数组 从下标为 0 开始到最后一个有效下标结束
		//进行累加操作
		for (int i= 0; i < arr.length; i++) {
			sum += arr[i];
		}
		
		System.out.println("数组所有元素之和为:" + sum);
	}
}

运行结果如下图
3.1

3.2 找出指定数组中所有元素中的最大值下标位置
//找出指定数组中所有元素的最大值的下标
public class Demo5 {
	public static void main(String[] args) {
		int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		
		//定义一个变量存储最大值的下标
		int index = 0;
		
		//遍历整个数组
		for (int i =1; i < arr.length; i++) {
			//使用 if 判断,当前 i 对应的元素大于 index 下标对应的元素
			if (arr[i] > arr[index]) {				
				index = i;
			}
		}
		
		//展示数组中最大值下标位置
		System.out.println("最大值的下标为:" + index);
	}
}

运行结果如下图
3.2

3.3 数组元素逆序输出
//数组元素内容逆序输出
public class Demo6 {
	public static void main(String[] args) {
		int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
		
		//原数组元素展示
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		
		System.out.println();
		
		//循环遍历进行元素交换 交换次数 数组长度 / 2
		for (int i = 0; i < arr.length / 2; i++) {
			arr[i] = arr[i] + arr[arr.length - 1 - i];
			arr[arr.length - 1 - i] = arr[i] - arr[arr.length - 1 - i];
			arr[i] = arr[i] - arr[arr.length - 1 - i];
		} 
		
		//循环遍历打印逆序之后的数组元素
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}
}

运行结果如下图
3.3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值