JavaSE 基础(五) 方法

目录

前言

1.方法概念

   1.1 什么是方法(method)

1.2方法存在的意义

1.3 方法定义

1.3.1 注意事项 

 1.4 方法调用的执行过程

1.5 实参和形参的关系 

 2. 方法重载

2.1 方法重载概念

2.2 注意事项

2.3 方法签名

3. 递归

3.1递归的概念

 3.1.1递归的必要条件 

3.1.2 代码示例:递归求n的阶乘 

3.2   关于 "调用栈"      

3.3 递归练习

后记


前言

Hi~ 你好! 

欢迎点击我的博客 : )       

这是我的学习总结,希望也能帮助到你

我的博客地址:hi~,我在这里~,欢迎关注哦,

三连不迷路,优质内容持续更新!

1.方法概念

   1.1 什么是方法(method)

方法就是一个代码片段. 类似于 C 语言中的 "函数"

1.2方法存在的意义

1.能够模块化的组织代码

2.代码能重复使用
3.便于理解
4.直接调用现成的

1.3 方法定义

// 方法定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
1.3.1 注意事项 

1.方法名采用小驼峰命名 maxNumber

2.在 java 当中,方法必须写在类当中
3.在 java 当中,方法不能嵌套定义

4.如果方法有返回值,返回值类型必须要与返回的实体类型一致,没有返回值写void

 1.4 方法调用的执行过程

调用方法 --- > 传递参数 --- > 找到方法地址 --- >
--> 执行被调方法的方法体 --- > 被调方法结束返回 --- > 回到主调方法继续往下 执行

1.5 实参和形参的关系 

Java中方法的形参就相当于 sum 函数中的自变量 n ,用来接收 sum 函数在调用时传递的值的。形参的名字可以随意
取,对方法都没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值
    public static void main(String[] args) {
        System.out.println(add(3, 4));
        //4和3是实参,在调用时传给形参a和b
    }
    public static int add(int a,int b){
        return a+b;
    }

Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体

对于基础类型来说, 形参相当于实参的拷贝. 传值调用 

 2. 方法重载

2.1 方法重载概念

在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。
Java 中方法也是可以重载的。
Java 中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了

2.2 注意事项

1. 方法名必须相同
2. 参数列表必须不同 ( 参数的个数不同、参数的类型不同、类型的次序必须不同 )
3. 与返回值类型是否相同无关

2.3 方法签名

在同一个作用域中不能定义两个相同名称的标识符

方法签名:经过编译器编译修改过之后方法最终的名字。
具体方式:
方法全路径名 + 参数列表 + 返回值类型,构成 方法完整的名字。

3. 递归

3.1递归的概念

一个方法在执行过程中调用自身 , 就称为 " 递归 ".
递归相当于数学上的 " 数学归纳法 ", 有一个起始条件 , 然后有一个递推公式 .
eg:求 N!
起始条件 : N = 1 的时候 , N! 1. 这个起始条件相当于递归的结束条件 .
递归公式 : N! , 直接不好求 , 可以把问题转换成 N! => N * (N-1)!
 3.1.1递归的必要条件 
1. 将原问题划分成其子问题,子问题必须要与原问题的解法相同
2. 递归出口
3.1.2 代码示例:递归求n的阶乘 

3.2   关于 "调用栈"      

方法调用的时候, 会有一个 " " 这样的内存空间描述当前的调用关系 . 称为调用栈
每一次的方法调用就称为一个 " 栈帧 "
每个栈帧中包含了这次调用的参数是哪些 , 返回到哪里继续执行等信息 ..

3.3 递归练习

1.按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)

 public static void main(String[] args) {
        int n =1234;
        printAll(n);
    }
    public static void printAll(int n){
        if (n<10){
            System.out.println(n);
        }else {
            System.out.println(n % 10);
            printAll(n/10);
        }
    }

2.求斐波那契数列的第 N  

1.递归

 public static int fibonacciNumbers(int n) {
        if (n == 0) {
            return 0;
        } else if (n == 1) {
            return 1;
        } else {
            return fibonacciNumbers(n - 1) + fibonacciNumbers(n - 2);
        }
    }

 2.循环

public static int fibonacciNumbers(int n) {
         int first = 0;         //确定第0项和第1项
         int second = 1;
         int result = 0;
         if (n == 0) {
             result = first;       //当项数是0的时候,返回0项上的数
         } else if (n == 1) {      //当项数是1的时候,返回1项上的数
             result = second;
         } else {
             for (int i = 2; i <= n; i++) {   //从第二项开始,项数的结果等于前两项之和
                 result = first + second;         //分别迭代前两项的值
                 first = second;
                 second = result;
             }
         }
         return result;
     }

后记

看到这里,希望能帮到你~

您的点赞 ,收藏 ,关注 是我创作的最大动力!

同时也欢迎在评论区进行交流,共同进步~       

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值