当前位置:主页 > 查看内容

Java基础语法(五)——方法的使用

发布时间:2021-06-24 00:00| 位朋友查看

简介:文章目录 一. 方法的基本用法 1. 什么是方法(method) 2. 方法定义语法 (1)方法的基本语法 (2)方法的调用 (3)Java内存结构 3. 方法调用的执行过程 4. 实参和形参的关系(重要) 二. 方法的重载 1. 重载要解决的问题 2. 使用重载 3. 重载的规则 规则 三、方法递……

本次内容大纲


在这里插入图片描述


一. 方法的基本用法


1. 什么是方法(method)


方法 其实就是把一个重复的东西进行封装,把他封装成一个功能了。

类似于 C语言的函数,但是又不完全相同。


方法存在的意义(不要背, 重在体会):

  1. 是能够模块化的组织代码(当代码规模比较复杂的时候).
  1. 做到代码被重复使用, 一份代码可以在多个位置使用.
  1. 让代码更好理解更简单.
  1. 直接调用现有方法开发, 不必重复造轮子.

2. 方法定义语法


(1)方法的基本语法

在这里插入图片描述

(2)方法的调用

在这里插入图片描述

代码示例:

求 1-100 之间的和

在这里插入图片描述

编译结果:

在这里插入图片描述

??我们看到,成功的调用了方法的内容,同时接收了方法的返回值。

??在这个代码练习中,我们知道了方法的基本语法及其调用。


(3)Java内存结构


在这里插入图片描述

??我们对方法的调用,是依赖于栈的

??每次调用一个方法,都会在栈上为这个方法开辟一个内存。把这个内存叫做:栈帧.

??以上面的代码为例,介绍一下方法在内存中的存放.


在这里插入图片描述

??首先调用的方法是main方法,那么此时在内存中会开辟一块main的栈帧,此时在main里创建了一个ret变量,在main的内存中就存放了ret的空间.


??此时再调用add方法,再次开辟一个栈帧,形参为n,存放n的空间,往下走 创建了一个sum 的变量,在存放一个sum的空间,进入循环有创建了一个 i 的变量.


??此时栈空间的存放情况:


在这里插入图片描述

??add方法return结束语句,调用完毕后,出栈.


在这里插入图片描述

??main方法语句执行完毕,出栈.


在这里插入图片描述


??这就是一个完整的方法调用过程.


3. 方法调用的执行过程


基本规则


1.定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.

2.当方法被调用的时候, 会将实参赋值给形参.

3.参数传递完毕后, 就会执行到方法体代码.

4.当方法执行完毕之后(遇到 return 语句),回到方法调用位置继续往下执行.

5.一个方法可以被多次调用.

4. 实参和形参的关系(重要)


??什么实参?什么是形参?

??让我们通过下面的代码示例来认识


在这里插入图片描述


我们通过一个练习来知道传参的使用.

题目要求:用方法来交换两个整形.

我们看一下下面的代码是否正确.


在这里插入图片描述

看似过程是正确的,我们看一下编译结果.


在这里插入图片描述
并没有进行交换,那是为什么呢?


??我们知道,我们传的是实参的值,但是形参只是实参的一份拷贝,所以在swap方法中,我们只是交换的是 x,y 这两个形参的值,swap方法调用完毕后两个形参的值自动被销毁,所以实参的值不变.


??在C语言中,我们要想通过函数来交换两个整形的值,需要进行&其地址操作


??但是我们明确说明:


1.Java中 没有&取地址符号

2.Java当中 栈上的内存地址是无法取到的

3.Java中方法传参只能进行值传参,不能像C语言进行址传参.


??那么在Java中如何实现传地址操作呢?

??答案是传引用,只要是引用类型就可以,类、接口、抽象类、枚举、String、数组等…

??具体使用我们会在之后更新的博客中继续提到.


传参时实参与形参的注意事项

在这里插入图片描述
如上图所示:

1.参数的个数、类型、顺序都要一 一匹配.

2.方法的返回值类型与接受类型也要一 一对应.


二. 方法的重载


??有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载.


1. 重载要解决的问题


在这里插入图片描述

??我们希望在向add方法传入两个double 类型的变量,实现浮点数的加法.

??但是编译结果:

在这里插入图片描述

??我们只能将代码修改为


在这里插入图片描述

??这两个方法实现的都是同一种功能,将两个数据进行加法运算.我们对不同的数据还得创建不同类型的函数,这样是不是过于麻烦,所以在Java中就有了方法重载的概念:用一个函数同时兼容多种参数.


2. 使用重载


??还是对于上面的代码进行修改:


在这里插入图片描述

??方法的名字都叫 add. 但是有的 add 是计算 int 相加, 有的是 double 相加; 甚至有的计算两个数字相加, 有的还可以是计算三个数字相加.


??同一个方法名字, 提供不同版本的实现, 称为 方法重载


3. 重载的规则


规则

在这里插入图片描述

看下面两个代码:

在这里插入图片描述

??通过这两个代码的例子,我们可以知道在Java编辑器看来,sum 的两个方法仍然是两个相同的方法,因为其参数列表相同.所以会进行报错,所以返回值对方法的重载没有影响.


三、方法递归


1.递归的概念


??一个方法在执行过程中调用自身, 就称为 “递归”.

??递归相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式.

??递归的注意点:

在这里插入图片描述

1.程序调用自己

2.这个递归程序一定要有一个趋近于中止的条件.

3.核心:写递归程序的时候,需要自己来推导一个递推公式.


例:

我们求 N!

起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.

递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)!

代码实现:


import java.util.Scanner;

 public static int fac(int n){
        if(n==1){
            return 1;
        }
        return n*fac(n-1);

    }

    public static void main5(String[] args){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int ret = fac(N);
        System.out.println(ret);

    }

2.递归执行过程分析


??递归的程序的执行过程不太容易理解, 要想理解清楚递归, 必须先理解清楚 “方法的执行过程”, 尤其是 “方法执行结束之后, 回到调用位置继续往下执行”.


3.方法递归练习


??见博客——Java 方法 递归使用及练习


??好了,这次Java基础语法——方法使用的知识就分享到这里结束了,希望大家能够多多练习,熟悉知识,提升自己.最后感谢大家的欣赏与关注!!!




谢谢欣赏!!!



完!

;原文链接:https://blog.csdn.net/rain67/article/details/115641111
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐