JavaSEDay05 总结笔记
01-方法介绍
- 介绍 : 方法 | 函数 (method) 一段具有独立功能的代码块, 不调用就不执行.
好处 :
提高代码的可阅读性
- 可以将挤在一起的臃肿代码, 按照功能进行分类管理
提高代码的复用性
- 原本需要重复编写的代码, 现在抽取到方法中, 只需要写一次, 对方法进行多次调用即可.
- 问题 : 方法是否可以提高程序的执行效率 ?
- 回答 : 不可以 !
02-方法的定义和调用格式
- 方法通用定义格式 :
public static 返回值类型 方法名 (参数列表) {
方法体;
return 结果数据;
}
public static : 目前暂时记住, 修饰符
返回值类型 : 跟方法返回的结果数据有关.
方法名 : 见名知意, 小驼峰命名法
参数列表 : 方法运行之前所需要的材料
方法体 : 方法中真正执行的逻辑代码
return :
1. 结束方法
2. 将结果返回给调用者.
1. 参数
问题: 自己这方法中, 要使用的数据, 是否有灵活性的要求?
需求: 设计一个方法, 打印10次HelloWorld --> 不要
需求: 设计一个方法, 打印n次HelloWorld --> 要参数
需求: 设计一个方法, 求三个小数的最大值 --> 要参数
问题: 要参数的话, 要几个? 要什么类型的?
需求: 设计一个方法, 求三个小数的最大值
数量: 3个
类型: double
代码: double a, double b, double c
需求: 设计一个方法, 从数组中找出最小值
数量: 1个
类型: 数组
代码: int[] arr
2. 返回值
步骤1: 先写代码逻辑
步骤2: 观察, 自己这个方法有没有结果产生
没有结果: void
public static void print(){
for(int i = 1; i <= 10; i++){
System.out.println("HelloWorld");
}
}
有结果: 通过return语句返回, 并修改返回值类型
public static int getMax(int a, int b){
int c = a > b ? a : b;
return c;
}
- 方法的调用
1. 带返回值的调用
1). 单独调用(不推荐)
getMax(10,20);
2). 赋值调用(推荐, 灵活)
int max = getMax(10,20);
System.out.println(max);
if(max % 2 == 0){
...
}
for(int i = 1; i <= max; i++){
...
}
3). 输出调用(偶尔用)
System.out.println(getMax(10,20));
2. 不带返回值的
1) 只能单独调用
print();
03-方法的常见问题
1. 方法不调用就不执行
2. 方法与方法之间是平级关系, 不允许嵌套定义
3. 方法的编写顺序, 和执行顺序无关
4. 如果一个方法的返回值类型为void, 表示此方法没有返回值, 可以省略return语句不写
如果非要写的话, 只能写成 return;
5. return语句下面, 不允许写代码, 因为执行不到, 属于无效代码.
6. 如果一个方法有具体的返回值(不是void), 一定要通过return语句带回结果数据, 无论什么情况下
public static int getMax(int a, int b){
if(a > b){
return a;
}else if(b > a){
return b;
}
// 编译错误: 当前的两个return都被条件所控制, 编译期就认为, 两个条件要都是false, 此方法就没有返回值
}
public static int getMax(int a, int b){
if(a > b){
return a;
}else if(b > a){
return b;
}else{
return a;
}
}
04-方法重载 Overload
- 介绍 : 方法与方法之间的一种关系
- 目标1 : 能够独立识别出方法与方法之间是否是正确重载
在同一个类中, 方法名相同, 参数不同, 与返回值无关
参数不同: 1. 个数不同 2. 类型不同 3. 顺序不同
- 目标2 : 能够理解方法重载带来的好处
不需要记忆过多繁琐的方法名字了
假设没有方法重载:
printInt(10);
printDouble(12.3);
printString("abc");
...
有方法重载 :
println(10);
println(12.3);
println("abc");
println('a');
println(false);
会根据实际参数的类型, 自己去匹配方法.
05-方法练习
示例代码:
public class MethodTest7 { public static void main(String[] args) { int[] arr1 = {11, 22, 33}; int[] maxAndMin = getMaxAndMin(arr1); System.out.println(maxAndMin[0]); System.out.println(maxAndMin[1]); } /* 需求: 设计一个方法, 用于从数组中找最大值和最小值 注意: return语句, 只能带回一个结果数据. 问题: 如果我手里有多个结果, 如何同时返回呢? 回答: 将多个结果, 存入数组, 并返回数组容器 */ public static int[] getMaxAndMin(int[] arr) { int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] > max) { max = arr[i]; } } int min = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } } int[] maxAndMin = {max, min}; return maxAndMin; } }
06-方法的参数传递
- 方法的参数传递基本数据类型 : 传递的是数据值
- 方法的参数传递引用数据类型 : 传递的是地址值