字节架构师:关于Java方法和调用,看完这篇,带你不迷路!

Java方法和调用

什么是方法

  • 是语句的集合,组合在一起执行一个功能

  • 包含于类或对象中

  • 在程序中被创建,其他地方被引用

在设计方的时候最好是一个方法完成一个功能,这样有利于后期拓展

比如你要出门,就要开门再出去,你要进门也要开门,再进来。

把开门和进门,出门分开成为3个功能,当你要出门的时候就调用开门和出门方法。

方法的定义和调用

public static 返回类型 方法名称([参数类型 变量, ......]) {
    方法体代码;
    [return [返回值];]
}

这个返回值可以是int,String,Map等等

参数也可以是多个,用逗号隔开

public class TestDemo {
    public static void main(String[] args) {
        print();    //主方法里面直接调用方法
    }
    public static void print() {
        System.out.println("Hello   World!"); //定义方法
    }
    public int sumMoney(int money1,int money2){
        int money = money1+money2;
        return money;
    }
}

方法重载

方法重载指的是:方法名称相同,参数的类型和个数不同,或者参数的排列顺序不同

public class TestDemo {
    public static void main(String[] args) {
        //此时将根据参数的类型和个数的不同执行不同的方法体
        System.out.println(add(10, 20));
        System.out.println(add(30, 40, 50));
        System.out.println(add(1.1, 2.1));
    }
    public static int add(int x, int y) {
        return x + y;
    }
    //此时方法名称相同,参数的个数不同
    public static int add(int x, int y, int z) {
        return x + y + z;
    }
    public static double add(double x, double y) {
        return x + y;
    }
}

可变参数

参数类型…(三个点) 参数名

可变参数必须写在参数列表的最后面

无法仅通过改变 可变参数的类型,来重载方法。

//可变参数本质上可变参数就是一个数组。所以,数组拥有的方法、属性,可变参数一样拥有。
public void varArgMethod(int b,int... arr) {
    //和数组一样,拥有属性length
    int lenth = arr.length;
    //索引遍历
    for(int i=0;i<arr.length;i++) {
        System.out.println(arr[i]);
    }
    //forEach循环遍历
    for(int ele:arr) {
        System.out.println(ele);
    }   
}

方法递归调用

所谓递归就是自己调用自己。

分类
  • 直接递归:方法自身调用自己。
  • 间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法。
注意事项
  • 递归一定要有条件限定,保证递归能够停止下来,否则会形成死循环并发生栈内存溢出(StackOverflowError)。
  • 递归中虽然限定了停止下来的条件,但是递归次数不能太多,否则也会发生栈内存溢出。
  • 禁止构造方法递归。
//使用递归计算10的阶乘
public class FactorialRecursion {
    public static void main(String[] args) {
        System.out.println(Factorial(5));
    }
    public static int Factorial(int n){
        if (n==1){
            return 1;
        }else{
          return  n*Factorial(n-1);
        }
    }
}

它的原理:

网图

分类: [javaSE]
[图片上传失败...(image-b449ce-1628838381105)]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容