Day05 总结笔记
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();
-
应用办法调用示例:
/* 带返回值办法的调用 : 1. 独自调用 (不举荐) : 数据没有接管 add(10,20); 2. 赋值调用 (举荐) : 很灵便 int result = add(10,20); 3. 输入调用 (偶然用) System.out.println(add(10, 20)); */ public static void main(String[] args) { // 生成办法返回值的快捷键 // 办法名 ().var + 回车 // ctrl + alt + V int result = add(10, 20); System.out.println(result); } // 需要: 计算两个整数的和 public static int add(int a, int b) { int c = a + b; return c; }
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);
printString("abc");
有办法重载:
println(10);
println("abc");
会依据理论参数的类型, 本人去匹配办法.
05- 办法练习
- 将 test 包中的案例把握
-
示例:
public class MethodTest2 {public static void main(String[] args) {check(10); System.out.println("-----------------"); print(20, 80); System.out.println("-----------------"); printHelloWorld(10); } public static void check(int num) {if (num % 2 == 0) {System.out.println(num + "是一个偶数"); } else {System.out.println(num + "是一个奇数"); } } public static void printHelloWorld(int n) { // -1 if (n < 1) {System.out.println("您传入的数据有误, 请查看"); return; } // 代码要是可能走到这里, 代表数据相对是正确的. for (int i = 1; i <= n; i++) {System.out.println("HelloWorld"); } } public static void print(int start, int end) {if (start > end) {System.out.println("您传入的数据有误, 请查看"); return; } for (int i = start; i <= end; i++) {if (i % 2 == 0) {System.out.println(i); } } }
06- 办法的参数传递
- 办法的参数传递根本数据类型 : 传递的是数据值
- 办法的参数传递援用数据类型 : 传递的是地址值
-
示例:
public class ArgsDemo2 { /* 问题: Java 中到底是值传递, 还是址传递? 答复: 1. 根本数据类型: 传递的是数据值 2. 援用数据类型: 传递的是地址值 值传递, 地址值也是值. */ public static void main(String[] args) {int[] arr = {10, 20, 30}; System.out.println("调用 change 办法前:" + arr[1]); // 20 change(arr); System.out.println("调用 change 办法后:" + arr[1]); // 200 } public static void change(int[] arr) {arr[1] = 200; }