方法、方法重载、递归介绍

方法是什么:

方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。

举一个简单例子

定义方法的注意点:

 1.方法的修饰符:暂时都用public static修饰

 2.方法申明了具体的返回值类型,内部必须使用return返回

 3.形参列表可以有多个,甚至可以没有;如果有多个形参,必须用逗号隔开且不能给初始化值

使用方法的好处:

提高代码的复用性,提高了开发效率

让程序的逻辑更清晰


方法的其他形式:

设计一个合理的方法的原则:

1.如果方法不需要返回数据,返回值类型必须申明成void(无返回值申明),此时方法内部     不可以使用return返回数据。

2.方法如果不需要接收外部传递进来的数据,则不需要定义形参,且调用方法时也不可以传   数据给方法。

3.没有参数,且没有返回值类型(void)的方法,称为值无参数、无返回值方法。 此时调用   方法时不能传递数据给方法。

需求:写一个方法,打印若干个“HelloWorld”,次数由调用者决定

import java.util.Scanner;
public class Method {
    public static void printHelloworld(int n){
        for(int i=1;i<=n;i++){
            System.out.println("Hello world");
        }
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        printHelloworld(n);
    }
}

方法的执行原理:

Java 程序的运行,都是在内存中执行的,而内存区域又分为栈、堆和方法区。那Java 的方法是在哪个内存区域中执行呢?
答案是栈内存 每次调用方法,方法都会进栈执行;执行完后,又会弹栈出去。
方法进栈和弹栈的过程,就类似于手枪子弹夹,上子弹和击发子弹的过程。最后上的一颗子
弹是,第一个打出来的;第一颗上的子弹,是最后一个打出来的。

方法参数的传递机制:值传递!

eg:

输出结果为 10、20、10 (第二个输出20是改变了change方法里的值,而最后一个输出的是main方法里的值,main方法中的一直未改变)


可变长度参数:

也称为可变参数或不定参数,可以在方法声明中使用,用于接受不确定数量的参数。
使用可变长度参数时,需要在参数类型之后加上三个连续的点( ... ,表示这是一个可变长度参数。
可变长度参数会被当作一个数组处理,开发者可以像操作数组一样操作这个参数。
需要注意的是: 每个方法只能有一个可变长度参数,而且必须是最后一个参数。
public class Kbcs {
    public static void main(String[] args) {
        System.out.println(sum(1, 2, 3, 4, 5));
        System.out.println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9));
    }
    public static int sum(int... nums) {
        int result = 0;
        for (int num : nums) {
            result += num;
        }
        return result;
    }
}
可变长度参数 只能用于方法的最后一个参数位置,并且不能和数组作为参数同时存在,否则会编译错误。在实际开发中,可变长度参数经常用于编写简化代码的API,以及可以接受任意数量参数的方法。

方法重载:

所谓方法重载指的是:一个类中,有多个同名但参数不同的方法;
(参数不同包括:参数的类型、个数、顺序
eg:
public class Ffcz2 {
    public static void main(String[] args){
        fire();
        fire("岛国");
        fire("岛国",999);
    }
    public static void fire(){
        fire("岛国");
    }
    public static void fire(String country){
        fire(country,1);
    }
    public static void fire(String country,int number){
        System.out.println("发射了"+number+"枚武器给"+country);
    }
}

(上面这个例子展现了嵌套的方法重载,第一个无参的fire执行方法的时候包含了第二个有country的fire,第二个只有country参数的fire执行的时候又包含了第三个有country和number的fire。)

递归:

Java 中,递归是指一个方法或函数在执行过程中调用自身的过程。递归可以用来
解决许多问题,特别是那些需要对某种数据结构进行深度优先搜索或遍历的问题。
递归函数通常包含两部分:基本情况和递归情况。基本情况是指问题可以直接解决的
情况,通常是递归函数的终止条件,避免无限递归。递归情况是指问题需要进一步分
解才能解决的情况,通常是递归函数中调用自身的部分。
在递归函数中,每次递归都会将问题规模减小,直到达到基本情况,然后开始回溯并
合并解决方案,直到最终解决整个问题。递归在某些情况下可以让程序更加简洁和优
雅,但也可能会带来性能问题和堆栈溢出等问题。
Java 中常见的递归实现包括计算阶乘、斐波那契数列等问题。递归虽然是一种强大的
编程技巧,但需要注意递归深度和递归栈的使用情况,以避免出现性能问题和堆栈溢
出等情况。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值