【Java SE】方法 和 递归 的应用
🔥博客主页🔥:【 坊钰_CSDN博客 】
欢迎各位点赞👍评论✍收藏⭐
目录
1. 方法的含义
1.1 例子
1.2 方法的概念
2. 方法的定义
3. 实参和形参
3.1 实参和形参的关系
4. 方法的重载
5. 递归
5.1 递归练习
6. 小结
1. 方法的含义
1.1 例子
我们先举一个例子:
假设有一位老师 “张三” ,在一次考试后,有一道题很难,那么学生 1 来问老师这道题咋写,学生 2 也来问老师咋写,学生 3 也来问老师咋写,很多学生都来问,这是老师想不可能给每一位学生都单独讲一遍,于是老师把这道题的解析录成一个视频,让学生们都去看,这样就解决了这个问题
- 这样老师把这个问题整理成视频,减少了时间的浪费
- 学生们自己点击视频,问题得到解决
- 老师避免一个一个学生去讲解
在编程中也有一样的思想,某一个功能需要反复使用,一遍一遍写出来又太过冗余,所以将这个功能封装起来(叫做 “方法”),需要它时,直接调用即可,节省了消耗
1.2 方法的概念
Java 中的 方法 其实就类似与 C 语言中的 函数,用来解决一些反复使用的 代码段
例:判断一个产品的重量是否达到标准 ( 0 < 重量 <10 为合格,重量 > 10 不合格 )
public class Test {public static void main(String[] args) {//产品1int product1 = 4;if(product1 > 0 && product1 < 10) {System.out.println("合格");} else {System.out.println("不合格");}//产品2int product2 = 12;if(product1 > 0 && product1 < 10) {System.out.println("合格");} else {System.out.println("不合格");}//产品3int product3 = 6;if(product1 > 0 && product1 < 10) {System.out.println("合格");} else {System.out.println("不合格");}}
}
这样每有一个产品,就要判断一下,代码中重复代码较多,那么这就可以用 方法 来优化
2. 方法的定义
//方法的定义修饰符 返回值 方法名称(参数类型 形式参数) {代码块(代码实现)return 返回值;
}
知道定义之后,就可以用方法来优化上面的例子
public class Test {//封装方法来检查是否合格public static void productCheak(int height) {if(height > 0 && height < 10) {System.out.println("合格");} else {System.out.println("不合格");}}public static void main(String[] args) {//多组产品int product1 = 4;productCheak(product1);int product2 = 13;productCheak(product2);int product3 = 8;productCheak(product3);}
}
运行结果
这样优化之后,代码结构更加清晰了然,这就是方法的作用
3. 实参和形参
例;交换两个数的值
public class Test {public static void swap(int x, int y) { //这里的 x y 为形式参数int ret = x;x = y;y = ret;}public static void main(String[] args) {int a = 10;int b = 20;System.out.println("交换前");System.out.println(a + " " + b);swap(a, b); //这里的 a b 为形式参数System.out.println("交换后");System.out.println(a + " " + b);}}
运行结果
这我们发现,代码是没错的,但是 a b 却没有交换,这是为什么?这就要探讨实参和形参的关系了
3.1 实参和形参的关系
在内存中,形参和实参是两个不同的实体,实参有一份空间,形参也有一份空间,形参把实参临时拷贝到自己的空间中,在自己的一份空间执行操作,不会影响实参的空间和内容,这就是为什么上述 a b 没有交换成功的原因,下面图解:
4. 方法的重载
在我们日常生活中,存在着一词多义的现象,例:
粉丝:可以指的是 某个明星有很多粉丝,还可以指 吃火锅时的 粉丝
那么在我们编程的方法中,一个方法也可以处理不用形参下的情况,这种就叫做方法的重载
例:写一个既能算整数相加也能算小数相加的重载方法 add
public class Test {public static int add(int x, int y) {return x + y;}public static double add(double x, double y) {return x + y;}public static void main(String[] args) {//整数int a = 1;int b = 5;int c = add(a, b);System.out.println(c);//小数double m = 1.9;double n = 4.3;double h = add(n, m);System.out.println(h);}}
运行结果
方法重载的注意事项
- 方法名必须相同
- 参数列表必须不同(形参的类型,个数)
- 与返回值无关
5. 递归
递归着两个字的含义
递:依次进行下去 归:在依次归递回来
递归就一句话:自己调用自己
例;正打印一个数字每一位,(例:1234 打印 1 2 3 4)
- 我们可以想要打印 1234 每一位,我们拆开
- 先打印 1 在打印 234 每一位
- 在打印 2 在打印 34 每一位
- 在打印 3 在打印 4 每一位
public class Test {public static void print(int n) {if(n > 10) {print(n / 10);}System.out.print(n % 10 + " ");}public static void main(String[] args) {int n = 1234;print(n);}
}
运行结果
图解:(反复理解 “递” 和 “归” 的含义)
5.1 递归练习
- 斐波那契数列问题
- 青蛙跳台问题
- 汉诺塔问题
这些都不一一讲解了,有兴趣的可以自行研究,我往期博客也有
6. 小结
以上就是对方法和递归的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持!