JavaSE----08.Java 方法

08.Java 方法

1、方法

  • 定义:Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段。
  • 语法:
修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

修饰符:告诉编译器如何调用该方法。定义了该方法的访问类型。

  • 访问修饰符:public 、 private、 protected 、 默认修饰符
  • 非访问修饰符:abstract、static、 final、 native 、synchronized

返回值类型 :方法可能会返回值。

  • void:没有返回值;
  • 数据类型(基本类型,引用类型)。

方法名:是方法的实际名称。

方法体:方法体包含具体的语句,定义该方法的功能。

参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。

  • 形参:在方法被调用时用于接收外界输入的数据。
  • 实参:调用方法时实际传给方法的数据。
  • 案例1(定义一个没有返回值,没有参数的方法)
    public static void main(String[] args) {
        //主方法里面直接调用方法
        getInfo();
    }

    public static void getInfo(){
        System.out.println("张繁星");
    }

案例2(定义一个有参有返回值的方法)

    public static void main(String[] args) {
            int add = getAdd(10, 20);
            System.out.println(add);
        }

        private static int getAdd(int a, int b){
            return a + b;
        }

2、方法调用

  • Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
public static void main(String[] args) {
        //主方法里面直接调用方法
        print("Hello");
        print("	world");
        print("!");
    }
    
    public static void print(String msg) {
        System.out.print(msg);
    }

2、方法的重载

  • 方法重载指的是:在一个类中方法名称相同,参数的类型和个数不同。返回类型可以相同也可以不同。最常用的地方就是构造器的重载。被重载的方法可以改变访问修饰符.
    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));
    }
    
    private static int add(int x, int y) {
        return x + y;
    }
    
    private static int add(int x, int y, int z) {
        return x + y + z;
    }
    
    private static double add(double x, double y) {
        return x + y;
    }

3、递归

  • 方法的递归调用指的是一个方法自己调用自己的形式。
  • 要进行方法的递归操作往往都具备有以下的特点:
    • 方法必须有一个递归的结束条件
    • 方法在每次递归处理的时候一定要做出一些变更

案例(利用代码计算一个数的的乘阶)

    public static void main(String[] args) {
        //阶乘的结果不能大于int的最大值
        System.out.println("请输入你要计算的阶乘整数:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        int f1 = f(n);
        System.out.println(n + "的阶乘结果为:" + f1);

        scanner.close();
    }

    public static int f(int n){
        if (n == 1){
            return 1;
        }else {
            return n * f(n-1);
        }
    }
  • 递归的优点就是易理解,容易编程。但递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带来了大量的函数调用,这也有许多额外的时间开销。
  • 能不用递归就不用递归,递归都可以用迭代来代替。
原文地址:https://www.cnblogs.com/zhangliuping/p/11862824.html