【Java学习笔记】方法的使用
- 一、一个例子
- 二、方法的概念及使用
- (一)什么是方法
- (二)方法的定义
- (三)方法调用的执行过程
- (四)实参和形参的关系(重要)
- (五)没有返回值的方法
- 三、方法重载
- (一)为什么需要方法重载
- (二)方法重载概念
- (三)方法签名
- 四、递归
- (一)生活中的故事
- (二)递归的概念
- (三)递归执行过程分析
- (四)举例
- 五、结束语
一、一个例子
把茶泡好喝有上图六个步骤,不同的人来学习泡茶的方法,每个人都要说一次会很烦。但是如果我们把它制作成上图所示的步骤图,让他们自己看,既清楚又节约时间。而且有什么改进工艺,可以直接修改步骤图,如何再让每个人看即可,不必费力和每个人再说一次。Java中的类就是起一个这样的作用——直接复用,利于维护。
二、方法的概念及使用
(一)什么是方法
Java中的“方法”类似于C语言中的“函数”,它是一个可以独立完成某种功能的代码片段。
存在的意义:(多体会,不用记)
- 模块化
- 复用
- 易理解
- 调用现有方法,省力
(二)方法的定义
方法语法格式:
修饰符 返回值类型 方法名称(参数类型 形参名,…){
方法体代码;
return 返回值(与返回值类型对应);//void返回值类型不需要返回值
}
public class Test003 {
//main方法是最常见的方法了。
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
注意:
- 方法名称采用小驼峰命名(第一个单词首字母小写,其他单词首字母大写)。
- 参数列表可以什么都不写。
- 方法必须定义在类当中,且方法不能嵌套定义,不用声明,也没有声明一说。。
- 修饰符暂时使用public static搭配,后面学类与对象可以再改其他。
(三)方法调用的执行过程
方法调用过程:
调用方法–传递参数–找到方法地址–执行被调用方法的方法体–被调方法结束返回–回到主调方法继续往下执行
注意事项:
- 只有调用才执行。
- 方法可多次调用。
(四)实参和形参的关系(重要)
方法的形参相当于数学函数中的自变量,用来接受方法被调用时传递的值。
形参是方法被定义时借助的一个变量,并在方法被调用时接收传递过来的值。
可以理解形参是被实参赋值的一个变量,它们在物理空间属于不同的两个存储位置。(传值调用)
(五)没有返回值的方法
方法的返回值类型是void,就可以没有返回值。
三、方法重载
public class Test012 {
public static int add(int a,int b){
return a+b;
}
public static double add(double a,double b,double c){
return a+b+c;
}
public static void main(String[] args) {
int a=1,b=3;
System.out.println(add(a,b));
double x=1.2,y=1.4,z=1.5;
System.out.println(add(x, y, z));
}
}
(一)为什么需要方法重载
起名困难,且同类型的方法使用一个名称,可以使使用者易用。
(二)方法重载概念
相当于人交流的一词多义。
在Java中,如果多个方法的名字相同,参数列表不同(,返回值可以不同也可以相同),则称该几种方法被重载了。
(三)方法签名
解释了为什么类中可以定义方法名相同的方法。
具体方式是:方法全路径名称+参数列表+返回值类型,构成了方法完整的名字。
java -v指令(反汇编)可以查看。
四、递归
(一)生活中的故事
经典故事:老和尚和小和尚讲老和尚和小和尚讲故事如何讲个没完没了的事。
(二)递归的概念
一个方法在执行过程中调用自身。
必要条件:
- 将原问题划分成子问题(解法相同)。
- 递归出口(要能结束)。
(三)递归执行过程分析
先执行完递归方法执行到最后一项,再依次回归返回值,并且逐次销毁。
(四)举例
汉诺塔问题
public class Test014 {
public static int count=0;
public static void hanoi(char a,char b,char c,int n){
if(n==1){
System.out.println(a+"->"+c);
count++;
}else if(n==2){
System.out.print(a+"->"+b+" ");
count++;
System.out.print(a+"->"+c+" ");
count++;
System.out.print(b+"->"+c+" ");
count++;
}else{
hanoi(a,c,b,n-1);
System.out.println(a+"->"+c);
count++;
hanoi(b,a,c,n-1);
}
}
public static void main(String[] args) {
int n=4;
hanoi('A','B','C',n);
System.out.println(count);
}
}
五、结束语
我是小邓,一个励志写好代码挣大钱的男人。希望通过博客在记录自己的学习历程的同时,认识更多志同道合的朋友。如果您觉得我的文章对您有帮助的话,请不要吝惜您的一键三连(点赞关注加收藏),这对我很重要,谢谢!