今日内容
- 方法的概述
- 方法的练习
- 方法的重载
- 方法参数类型详解
01. 方法的概述和定义格式
- 什么是方法?
- 为什么要有方法?
- 方法的定义格式为?
总结:
1. 方法就是一段独立特性的小程序,不调用就不执行
2. 方法的出现可以提高代码
1. 可阅读性
2. 复用性
注意:方法不能提升程序的执行效率
3.
修饰符 返回值类型 方法名(参数1, 参数2...){
方法体;
return 返回值;
}
修饰符 : 目前来说就是public static
返回值类型: 跟返回值相关
方法名:合法的标识符即可
参数列表:方法运行之前所需要的材料
方法体:方法运行的过程,真正的代码逻辑
return :
1. 将结果提交给调用者
2. 结束方法
02. 方法案例之定义求和方法
定义方法之前的两个明确是?
总结: 1. A : 参数列表
B: 返回值类型
2.
/*
* 需求:求两个小数的和
* 1,返回值类型 double
* 2,参数列表 double a, double b
*/
public static double getSum(double a, double b){
return a + b;
}
03. 方法调用之有明确返回值的方法调用
- 带有返回值的方法有几种调用方式?
总结:
1. 赋值调用(推荐)
使用变量接受方法运行后的结果,接受到了之后,就可以随意操作数据了
2. 输出调用
仅仅是对数据做一个展示,无法进行后续的逻辑操作
3. 单独调用(没有意义)
炒菜案例
04. 方法调用之方法调用图解
- 看图说话
05. 方法练习之求两个数据较大值
- 分析两个明确, 案例演示
06. 方法练习之比较两个数据是否相等
- 分析两个明确, 案例演示
(4分钟)
定义一个方法判断两个整数是否相等
要求: 1.在注释中写明需求
2.在注释中明确返回值类型是什么
3.在注释中明确参数列表是什么
调用该方法返回结果,打印结果
要求:
1.使用键盘录入两个int数做为参数,调用方法时传入
2.打印输出结果
07. 方法调用之void修饰的方法调用
- 需求: 定义方法, 在控制台打印10句HelloWorld
- 方法什么时候需要用void修饰, 重点!
总结:
如果方法要完成的逻辑,仅仅是在控制台完成输出的话,就不需要返回值
(方法要完成的逻辑,方法内部就可以处理好)
例如: 求两个整数的和, 并将结果打印在控制台 -> 不需要返回值,因为仅仅是一个打印
求两个整数的和,根据结果决定在控制台输出几次HelloWorld
结论:
方法什么时候定义void?
就看该方法运行后的结果,是否有后续的逻辑操作
- void修饰的方法有几种调用方式?
总结:
只能单独调用
- return的作用:
1. 结束方法
注意:
1. 如果方法的返回值类型是void, 那么return后面不能跟上具体的值.
2. 如果方法的返回值类型是void, 那么return语句可以省略不写.
2. 用于将方法的返回值携带给调用者.
08. 方法练习之在控制台打印所有的水仙花数
09. 方法练习之在控制台打印1到n的数据
- 需求: 定义一个方法传递一个整数(该整数大于1),在控制台打印1到该数据的值
分析两个明确, 案例演示
练习
(4分钟)
定义一个方法传递一个整数(该整数大于1),在控制台打印1到该数据的值
要求:1.注释中写明需求
2.注释中明确返回值类型和参数列表
调用该方法,可以在控制台显示打印结果
10. 方法重载的概述和特点
- 什么是方法的重载?
总结:
概念:在同一个类中,方法名相同,参数列表不同,与返回值无关
参数列表不同 : 1. 类型不同 2. 个数不同 3. 顺序不同(没有意义)
Override和Overload的区别
Override : 重写
Overload : 重载
- 问题:
已知函数 : void show(int a, int b, float c){ },
哪个答案和show不是函数重载?
A. void show(int a,float c,int b){
}
B. void show(int x,int y,float z){
// 不能构成重载,因为类型完全一样
}
C. int show(int a, float c, int b){
return a;
}
D. int show(int a, float c){
return a;
}
11. 方法重载练习之比较两个数据是否相等
- 需求: 定义重载的两个方法实现比较两个数据是否相等。
- 问题:
- 参数类型为int的方法能否接受byte的数据?
可以,因为底层有默认的隐式转换
2. 有两个方法,参数列表为byte 和 int类型,
如果想要调用参数类型为byte的方法需要怎么做
手动加入强制类型转换
public class Test5_Overload {
/*
* 重载练习之比较两个数据是否相等
*/
public static void main(String[] args) {
boolean check = check((byte)10,(byte)10);
System.out.println(check);
}
public static boolean check(int a, int b){
System.out.println("int........");
return a == b;
}
public static boolean check(byte a, byte b){
System.out.println("byte.......");
return a == b;
}
}
12. 方法参数是基本类型的情况和图解
- 方法的形参是基本数据类型, 传递的是?
总结:
1: 具体的值
结论:
方法的形式参数是基本数据类型的时候, 形式参数的改变( 不会影响 )实际参数
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:" + a + ",b:" + b);
change(a, b);
System.out.println("a:" + a + ",b:" + b);
}
public static void change(int a, int b) {
System.out.println("a:" + a + ",b:" + b);
a = b;
b = a + b;
System.out.println("a:" + a + ",b:" + b);
}
- 转ppt问答题
13. 方法参数是引用类型的情况和图解
- 方法的形参是引用数据类型, 传递的是?
总结:
1: 地址值
结论:
方法的形参是引用数据类型的时候, 形式参数的改变(直接影响)实际参数
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
change(arr);
System.out.println("--------------");
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
}
public static void change(int[] arr) {
for (int x = 0; x < arr.length; x++) {
if (arr[x] % 2 == 0) {
arr[x] *= 2;
}
}
}
- 转ppt问答题
14. 方法练习之数组遍历
15. 方法练习之数组获取最值
- 思考: 我能不能一个方法就可以完成求最大值和最小值的逻辑?