方法的定义

方法的定义

设计方法的原则:方法的本意是功能块,就是实现某个功能的语句的集合。我们设计的时候,最好保持方法的原子性,就是一个方法完成以一个功能,这样又利用我们后期的扩展。

方法包含一个方法头和一个方法体。下面是方法的所有部分:

  • 修饰符:这是可选的,告诉编译器如何调用该方法。定义了方法的访问类型,如加了static就可以直接调用
  • 返回值类型:returnValueType是方法返回值的数据类型。有些无返回值的方法的关键字是void
  • 方法名: 方法名和参数共同构成方法签名。
  • 参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型,顺序和参数的个数。参数也是可选的。 参数分为形式参数和实参.
    在这里插入图片描述
  • 方法体:方法体包含具体的语句,定义该方法的功能。
定义一个无参无返回值的方法
 public void add(){
        System.out.println("hello world!");
    }
定义一个无返回值有参数的方法
public void add(int a,int b){

            System.out.println(a+b);
            System.out.println("hello world!");
        }
定义一个有返回值的有参方法
  public int add(int a,int b){
            return a+b;  
        }
定义一个类方法
  public static double add(double a,double b) {
           return a+b;
    }

调用类方法的方式:

public class Demo05 {
    public static void main(String[] args) {
        double add = add(3, 5);//直接 方法名();调用
        System.out.println(add);
    }

方法的重载

定义:重载就是在一个类中,有相同的函数名称,但形参不同的函数

方法的钟重载的规则:

  • 方法名称必须相同。
  • 形参列表必须不同(个数不同、或类型不同、参数排列顺序不同)。
  • 方法的返回类型可以相同也可以不同
  • 仅仅返回类型不同不足以成为方法的重载
public void add(int a,int,b){
}
//形参的数量不同:
public void add(int a ,int b,int c){}
//排列顺序不同:
public void add(int b,int a,int c){}
//形参的数据类型不同
public void add(double a,char b){}

可变参数

当我们在用方法的重载来进行传递参数的时候发现,如果要传递的参数的数量比较多,那么就需要给方法加上很多形参,在这种情况下,我们就可以使用可变参数

声明的方式:在指定参数类型后面假一个省略号(…)。

public class Demo02 {
    public static void main(String[] args) {
        new Demo02().test(10,20,30,3);
    }
    public void test(int a,int... i){
        for (int x=0;x<i.length;x++){
            System.out.println("a="+a+" "+"i[x]="+i[x]);
        }
    }
}

输出结果如下
在这里插入图片描述

注意点: 一个方法中只能指定一个可变参数,并且它必须时方法的最后一个参数。任何普通的参数必须在它前面

递归(⭐)

解决一些小基数的运算,如果基数较大,不建议使用递归,导数运行速度变慢,还有可能导致栈溢出。

public class Demo03 {
    public static void main(String[] args) {
        System.out.println(new Demo03().f(5));
    }

    public int f(int n){
        if(n==1){
          return 1;
        }else {
            return n*f(n-1);//调用自己,首相n进来函数内走else,n*f(n-1)-> n-1在进函数内走else,相当于变成了n*(n-1*f(n-2));直到n=1;实现了递归:n!这里的f(1)就是递归头
            //f(n-1)就是递归体
        }
    }
}

//递归头:什么时候不调用自己就是递归头,如果没有头,将陷入死循环
//递归体:就时什么时候调用自己

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值