文章目录
一. 方法(Method),函数(function)的定义
- main方法专门用JVM来负责调用,只需启动JVM即可。
- 在Java最小的程序单元,类中定义,在其他方法之外,不影响顺序。
- 方法:程序中完成独立功能,可重复使用的一段代码的集合。
格式:
[修饰符] 返回值类型 方法名称(形式参数,......){
方法体
[return 值];
}
- 方法必须调用才生效。
- 如果方法使用static修饰:
- 此时我们使用方法所在类的名称.方法名(参数)来调用;
- 如果方法没有使用static修饰:
- 此时我们得使用所在类的对象来调用。
新建MethodDemo.java
//方法的使用
class MethodDemo
{
static void doWork(){
System.out.println("两百行代码");
}
public static void main(String [] args){
System.out.println("代码片段A");
MethodDemo.doWork();
System.out.println("代码片段B");
MethodDemo.doWork();
System.out.println("代码片段C");
MethodDemo.doWork();
System.out.println("代码片段D");
MethodDemo.doWork();
}
}
二. 方法的术语
- 修饰符:public,static修饰的方法属于类,直接使用类名调用即可。
- 返回值类型:方法其实就是在完成一个功能,该功能是否需要给调用者返回一个结果。
- 如果不需要给调用者返回结果,此时使用void来声明,无返回的意思。
- 方法名称:遵循标识符的规范,使用动词表示,首字母小写,驼峰表示法。
- 形式参数:仅仅是占位而已,可以有多个。
- 参数列表:参数类型+参数个数+参数顺序。
- 方法签名:方法名称+方法参数列表。
- 在同一个类中,方法签名是唯一的。
- 方法体:具体完成该功能的代码。
- 返回值:在方法内部,使用return关键字;
- 功能1:给调用者返回一个结果,此时该方法不能使用void修饰。
- 功能2:结束当前方法。
- 实际参数:调用者在调用某一个具体方法的时候,实际传递的参数。
三. 如何设计方法
-
到底需要定义什么功能方法。
-
是否需要定义返回值类型。
-
是否需要形式参数。
-
是否需要定义返回值类型:
- 如果不需要返回结果,此时用void修饰。
- 如果需要返回结果,则需要返回结果的类型,把该类型作为返回值类型。
-
是否需要形式参数:
由调用者得知需要的参数,这便是形式参数。
新建MethodDemo.java
//方法的定义和调用
class MethodDemo2
{
//无参数,无返回
static void p(){
System.out.println("---------------");
}
//有参数无返回
static void pValue(String val){
System.out.println(val);
}
//无参有返回
static String getValue(){
return "Hello";
}
//有参有返回
static int getSum(int a,int b){
return a + b;
}
public static void main(String[] args)
{
MethodDemo2.p();
String val = "huangkun";
pValue(val);
String val1 = getValue();
System.out.println(val1);
int sum = getSum(3,4);
System.out.println(sum);
}
}
四. 方法的执行分析
![image][execute]
五. 方法设计练习
发送短信,方法分析
![image][note]
登录,方法分析
六. 方法的重载设计
同一个类中,允许存在一个以上个方法名存在,只要参数列表不同即可。
- 作用:屏蔽了同一功能的方法由于参数不同造成方法名称不同。
- 两同:同类中,方法名相同;
- 一不同:方法参数不同(参数类型,个数,顺序)
注意:方法重载好方法的返回值类型无关,只是一般要求返回值类型一致。
新建OverLoadDemo.java
//求两个数之和,方法重载
class OverLoadDemo
{
static int getSum(int a,int b){
return a + b;
}
static double getSum(double a,double b){
return a + b;
}
public static void main(String[] args)
{
double sum = getSum(24,2);
System.out.println(sum);
sum = getSum(2.34,2.34);
System.out.println(sum);
}
}
七. 重载在Jdk中的使用
八. 递归操作
新建RecursionDemo.java
//递归操作
class RecursionDemo
{
//求斐波那契数列,f(0)=0;f(1)=1;f(n)=f(n-1)+f(n - 2)
static int fn(int n){
if(n == 0)
return 0;
else if (n == 1)
{
return 1;
}
else
return fn(n - 1) + fn(n - 2);
}
public static void main(String[] args)
{
System.out.println(fn(3));
}
}