一、什么是方法?
我们经常说做事要有方式方法。实现某个目的的具体过程. 例如我们学过 main 函数在里面写求水仙花数、斐波那契数列等
二、为什么要用方法?
eg: 例如有两 小明、小红两个人,小明求 5!,小红求 10!,这个时候都需要求阶乘。此时
我们可以制作一个方法来求任何数的阶乘
写且只写一次,供多次使用,提高代码的复用性
三、方法的种类
3.1 方法的格式
访问修饰符 是否静态 有无返回值 方法名( 有无参数 ){
}
3.1.1 无返回值
3.1.2 无参数无返回值
public void demo ( ) {
System. out. println ( "无参数无返回值" ) ;
}
3.1.3 无参数有返回值
public int demo2 ( ) {
return 18 ;
}
返回值可以是任意的类型,使用 return 关键字来返回数据,同时也是结束此方法
定义方法的步骤
方法执行流程
定义的方法不被调用的时候是不会去执行的 在主函数里面需要创建方法所在类的对象去调用方法,类似于我们写的 Random rd = new Random( );
调用者:主函数 main 执行者:某一个方法本身 实际参数:实际参与运算的数据 形式参数:方法上小括号里面的参数
3.1.4 有返回值
无参数有返回值
public String demo3 ( ) {
return "阿梅" ;
}
有参数有返回值
public double demo4 ( double weight) {
return weight;
}
每一个方法最后一行都有一个return,没有返回值可以省略不写,但系统会帮我们添加一个,其作用就是为了结束方法如果手动的写出 return 就不允许带回任意的数据。
定义方法注意事项
方法不能定义在另一个方法里面 不能写错格式 注意参数列表 返回值是void , return 可以省略不写 return 结束此方法,所以下面不能写代码 方法的返回值要和 return 返回的数据类型对应 练习
四、方法的重载
4.1 什么是方法的重载
在同一个类中
方法名相同 参数列表不同(顺序、个数、类型) 与返回值无关
public void test1 ( ) {
}
public void test1 ( int i) {
}
public void test1 ( String name) {
}
public void test1 ( char sex) {
}
public void test1 ( double weight) {
}
public void test1 ( int i, int j) {
}
public void test1 ( int i, String name) {
}
4.2 方法参数种类
4.2.1 基本数据类型
基本数据类型的变量当做参数传递的时候 方法的局部变量会随着方法的执行完毕而被释放 局部变量:
4.2.2引用类型
引用数据类型当做参数传递,其实传递的是地址值 即使方法执行完毕,但是实体(对象、数组)还在对内存中
五、递归
5.1 递归的概述
public void method ( ) {
System. out. println ( “递归的演示”) ;
method ( ) ;
}
5.2 递归分为两种
5.2.1 直接递归
递归的代码演示,计算 1-n 之间的和,使用递归完成
public class DiGuiDemo {
public static void main ( String[ ] args) {
int n = 5 ;
int sum = getSum ( n) ;
System. out. println ( sum) ;
}
public static int getSum ( int n) {
if ( n == 1 ) {
return 1 ;
}
return n + getSum ( n- 1 ) ;
}
}
注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出
5.2.2 间接递归
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
public class Hello {
public static void main ( String[ ] args) {
Hello hello = new Hello ( ) ;
hello. a ( ) ;
}
public void a ( ) {
b ( ) ;
}
public void b ( ) {
c ( ) ;
}
public void c ( ) {
a ( ) ;
}
}