iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中方法的使用、重载与递归的详细介绍
  • 526
分享到

Java中方法的使用、重载与递归的详细介绍

2024-04-02 19:04:59 526人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一.方法的基本使用1.什么是方法2.方法基本语法二.方法的重载1.重载的作用2.重载的使用规则三.方法的递归1.递归的概念2.递归执行过程分析3.递归练习1.按顺序打印一个数字的

一.方法的基本使用

1.什么是方法

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

2.方法基本语法

基本语法


 // 方法定义
    public static 方法返回值 方法名称(参数类型 形参){
        方法体代码;
        return 返回值;
    }
 
    public static void main(String[] args) {
        // 方法调用
        返回值变量 = 方法名称 (实参);
    }

看到这里可能有点抽象,接下来写一个具体的方法:两个整数相加


public class TestDemo {
    // 方法定义
    public static int Add(int x,int y){
        int sum = x+ y;
        return sum;
    }
 
    public static void main(String[] args) {
        //方法的调用
        Add(10,20);
        System.out.println(Add(10,20));
    }
}

注意事项

1.方法定义时, 参数可以没有。每个参数要指定类型

2.方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 vo

3.方法定义时的参数称为形式参数(形参),方法调用时的参数称为实际参数(实参)

4.方法的定义必须在类之中, 代码书写在调用位置的上方或者下方都可以

5.所有程序的入口:main函数

形参与实参的关系

首先我们写一个交换两个数的方法,并运行一下


public class Test1 {
    public static void swap(int a,int b){
        int temp = a;
        a = b;
        b = temp;
    }
 
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("交换实参前:"+a+" "+b);
        swap(a,b);
        System.out.println("交换实参后:"+a+" "+b);
    }
}

为什么没有发生任何改变呢?

因为我们交换的是形参,而不是交换的实参。如果要交换实参,我们应该拿到a和b的地址,但是!a和b在main函数中,函数里的变量属于局部变量,存放在栈上。但是在Java中,拿不到栈上的地址,所以a和b的实际值并没有发生改变。如果要交换a和b的值,只能把a和b的值放在堆上(放在堆上的都是对象!!)

二.方法的重载

1.重载的作用

前面我们提到了方法需要参数类型,但是如果我们需要用一个函数同时兼容多种参数的情况应该怎么办呢? 这里就可以使用到方法重载

在我们写了一个add方法后,如果我们想用这个方法计算double类型的时候,会出现类型不兼容的问题,那么我们应该怎么解决呢?或许可以像下面这样


public class Test2 {
    public static int addInt(int a, int b){
        int sum = a+b;
        return sum;
    }
 
    public static double aDDDouble(double a,double b){
        double sum = a+b;
        return sum;
    }
 
    public static void main(String[] args) {
        double a = 10.5;
        double b = 20.5;
        addDouble(a,b);
        System.out.println(addDouble(a,b));
    }
}

这种写法不存在任何问题,例如在Go语言中就这样使用,但是Java认为addInt这种名字不太好,不如直接叫add,这就有了如下写法


public class Test2 {
    public static int add(int a, int b){
        int sum = a+b;
        return sum;
    }
 
    public static double add(double a,double b){
        double sum = a+b;
        return sum;
    }
 
    public static void main(String[] args) {
        double a = 10.5;
        double b = 20.5;
        add(a,b);
        System.out.println(add(a,b));
    }
}

运行起来也没有任何问题,这就是重载的作用!能解决参数类型不匹配等问题。比如add方法,你还能添加更多版本的使用,比如多个数相加...

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

2.重载的使用规则

针对同一个类:

1.方法名相同

2.方法的参数不同(参数个数或者参数类型)

3.方法的返回值类型不影响重载

4.当两个方法的名字相同, 参数也相同, 但是返回值不同的时候, 不构成重载。比如int add(int a,int b)和double add(int a,int b)

三.方法的递归

1.递归的概念

递归就是方法调用自己的过程。实现递归,需要去推导出递归公式。

递归的前提:有一个趋近于终止的条件、自己调用自己

递归的关键:就是要找到递归公式!理解"递"和"归"的过程

2.递归执行过程分析


public class Test3 {
    public static int fac(int n){
        if(n==1){
            return 1;
        }
        int temp = n*fac(n-1);
        return temp;
    }
 
    public static void main(String[] args) {
        System.out.println(fac(3));
    }
}

具体过程分析:

3.递归练习

相信看到这里,你对递归也有了一定的认识,可以适当练习一些题增加熟练度。附上笔者的答案,如有错误,请斧正!

1.按顺序打印一个数字的每一位

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


public class Demo1 {
    public static void print(int n){
        if(n>9){
            print(n/10);
        }
       System.out.print(n%10+" ");;
    }
 
    public static void main(String[] args) {
        int n = 1234;
        print(n);
    }
}

2.递归求 1 + 2 + 3 + ... + 10

递归求 1 + 2 + 3 + ... + 10


public class Demo2 {
    public static int func(int n){
        if(n!=0){
            n += func(n-1);
        }
        return n;
    }
    public static void main(String[] args) {
        System.out.println(func(10));
    }
}

3.返回组成它的数字之和

写一个递归方法,输入一个非负整数,返回组成它的数字之和. 例如,输入 1729, 则应该返回1+7+2+9, 它的和是19


public class Demo3 {
    public static int func(int n){
        if(n<10){
            return n;
        }
        return n%10+func(n/10);
    }
 
    public static void main(String[] args) {
        System.out.println(func(1792));
    }
}

4.求斐波那契数列的第 N 项

解法一:使用递归,时间复杂度为O(2^n),空间复杂度为O(n)


public class Demo4 {
    public static int fib(int n){
        if(n==1 || n == 2){
            return 1;
        }else{
            return fib(n-1)+fib(n-2);
        }
    }
 
    public static void main(String[] args) {
        System.out.println(fib(1));
        System.out.println(fib(2));
        System.out.println(fib(3));
        System.out.println(fib(4));
        System.out.println(fib(123456));
    }
}

但是这种解法效率并不高,再计算较大数字时就会明显出现停顿,因为它会进行很多重复的运算,于是我们可以用循环写这个代码,也叫迭代解法

解法二:使用迭代,时间复杂度为O(n),空间复杂度为O(1)


public class Demo4 {
    
    public static int fib2(int n){
        if(n==1 || n==2){
            return 1;
        }
        int f1 = 1;
        int f2 = 1;
        int f3 = 0;
        for (int i = 3; i <= n; i++) {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }
 
    public static void main(String[] args) {
        System.out.println(fib2(1));
        System.out.println(fib2(2));
        System.out.println(fib2(3));
        System.out.println(fib2(4));
        System.out.println(fib2(40));
    }
}

到此这篇关于Java-方法的使用、重载与递归的文章就介绍到这了,更多相关Java重载递归内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中方法的使用、重载与递归的详细介绍

本文链接: https://www.lsjlt.com/news/157169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中方法的使用、重载与递归的详细介绍
    目录一.方法的基本使用1.什么是方法2.方法基本语法二.方法的重载1.重载的作用2.重载的使用规则三.方法的递归1.递归的概念2.递归执行过程分析3.递归练习1.按顺序打印一个数字的...
    99+
    2024-04-02
  • Java中的递归方法示例介绍
    目录递归递归的注意事项:案例一递归求阶乘不使用递归实现阶乘使用递归实现阶乘澳大利亚不死神兔(斐波那契数列)使用数组实现使用递归实现总结递归 方法定义本身调用方法本身的现象叫做递归 在...
    99+
    2024-04-02
  • Java中方法的使用、重载与递归的示例分析
    这篇文章主要介绍了Java中方法的使用、重载与递归的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.方法的基本使用1.什么是方法方法是一个代码片段,类似于C语言中的...
    99+
    2023-06-25
  • Java程序中方法的用法重载和递归
    目录前言一、方法的基本用法1.什么是方法2.方法的基本定义3.方法调用的执行过程4.方法中的实参和形参二、方法的重载1.重载的概念2.例题分析三、方法的递归1.递归定义2.例题分析3...
    99+
    2024-04-02
  • 【Java基础篇】方法的使用(方法的重载和递归)
    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用,数组的使用,类和对象,继承和多态,抽象类和接口等内容 ...
    99+
    2023-08-20
    java 开发语言 jvm
  • Java中的参数传递详细介绍
    目录前言1.值传递2.引用传递3.String类型传递4.举例总结前言 Java中的参数传递:分为值传递和引用传递但本质上,Java中只有值传递。引用传递,其实可以理解为传的是类似指...
    99+
    2024-04-02
  • 详细介绍golang中.()的使用方法
    Golang是一门非常流行的编程语言,在很多领域都有着广泛的应用。在开发过程中,很多时候我们需要将函数作为参数传递给其他函数,这时候就需要用到golang中的.()用法。本文将详细介绍golang中.()的使用方法。什么是.()用法?在go...
    99+
    2023-05-14
  • 详细介绍Github的使用方法
    随着互联网技术的不断发展,越来越多的开发者开始加入到开源项目中,Github作为目前全球最大的代码托管平台之一,也成为了开发者们分享、学习、合作的重要工具之一。然而,如何使用Github来进行代码管理、版本控制、协作开发等,还是很多新手开发...
    99+
    2023-10-22
  • Java中ArrayList的使用详细介绍
    目录1.ArrayList类1.1ArrayList类概述1.2ArrayList类常用方法1.2.1构造方法1.2.2成员方法1.2.3示例代码1.3ArrayList存储字符串并...
    99+
    2024-04-02
  • 【JAVA】带你认识java方法|java中的方法&方法中的重载和递归
    作者主页:paper jie的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将jav...
    99+
    2023-08-31
    java 开发语言
  • Java 方法的重载与参数传递详解
    目录方法重载概述方法重载特特点方法重载练习方法参数传递方法参数传递(基本类型)方法参数传递(引用类型)方法重载概述 方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方...
    99+
    2024-04-02
  • React中setState/useState的使用方法详细介绍
    目录一、React如何使用setState/useState的最新的值A.使用setState的最新的值B.使用useState的最新的值二、React中setState/useSt...
    99+
    2023-05-14
    React setState与useState React setState React useState
  • fastjson 使用方法详细介绍
    Fastjson介绍Fastjson是一个Java语言编写的JSON处理器。遵循http://json.org标准,为其官方网站收录的参考实现之一。功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、M...
    99+
    2023-05-30
    fastjson 使用
  • 详细介绍mysql中limit与offset的用法
    目录mysql limit与offset用法附:Mysql limit offset用法举例总结有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的...
    99+
    2024-04-02
  • Java方法与递归怎么使用
    今天小编给大家分享一下Java方法与递归怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。java中方法的使用什么是方法...
    99+
    2023-06-30
  • Java反射使用的详细介绍
    文章目录 反射反射基本介绍反射获取类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象 反射 反射基本介绍 反射概述: 反射认为类的每一个成份都是一个对象, 对于任何一个Class类,在"运行的时候"都可以直接得...
    99+
    2023-08-20
    java jvm 开发语言
  • 全面分析Java方法的使用与递归
    目录java中方法的使用什么是方法方法的定义与使用方法如何进行调用及其方法调用过程方法的形参和实参方法重载方法签名递归java中方法的使用 什么是方法 举一个日常生活中的例子,比如我...
    99+
    2024-04-02
  • Java中CompletableFuture 的详细介绍
    目录1.概述1.0 创建 CompletableFuture 的对象的工厂方法1.1 non-async 和 async 区别1.1.1 non-async 示例:注册 action...
    99+
    2024-04-02
  • React Immutable使用方法详细介绍
    目录1. 介绍2. 优缺点3. 对象处理4. 数组处理5. 优化组件渲染6. immutable和redux集合使用1. 介绍 假设当前 redux 的大小为 1G,现在要修改 re...
    99+
    2024-04-02
  • Vuex详细介绍和使用方法
    目录一、什么是Vuex二、运行机制三、创建项目1、使用脚手架搭建Vue项目2、安装Vuex3、启动项目4、配置使用Vuex4.1、创建store文件夹4.2、配置全局使用store对...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作