方法调用

方法

方法定义的完整格式

  • 方法的修饰符:暂时都使用public static 修饰。
  • 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。
  • 形参列表可以有多个,甚至可以没有; 如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值。
  • 如果方法不需要返回结果,返回值类型必须申明成void(无返回值), 此时方法内部不可以使用return返回数据。

方法重载

  • 同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法。
  • 作用: 可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。
  • 只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!(如:修饰符,返回值类型都无所谓)
  • 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。

可变参数

  • 可变参数用在形参中可以接收多个数据。
  • 可变参数的格式:数据类型...参数名称

可变参数的作用

  • 传输参数非常灵活,方便。可以不传输参数,可以传输1个或者多个,也可以传输一个数组
  • 可变参数在方法内部本质上就是一个数组。

可变参数的注意事项:

  • 1.一个形参列表中可变参数只能有一个
  • 2.可变参数必须放在形参列表的最后面

参数传递

值传递:在 Java 方法中传递参数,形参本质是实参的副本。

  1. 参数是基础数据类型:对形参的改变不会影响实参。
  2. 参数是指向对象的引用(包括数组、字符串):对对象数据进行更改会影响实参,但改变引用指向的对象不会影响实参。
public class Test {
    public static void main(String[] args) {
        int i = 0;
        int[] arr = {0};
        test(i, arr);
        System.out.println("i = " + i);
        System.out.println("arr[0] = " + arr[0]);
    }

    private static void test(int i, int[] arr) {
        i++;                            // 实参不改变
        arr[0]++;                       // 实参指向的对象改变
        arr = new int[]{2};             // 实参不改变
    }
}

方法递归

  • 方法直接调用自己或者间接调用自己的形式称为方法递归(recursion)。
  • 递归做为一种算法在程序设计语言中广泛应用。
  • 递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出现象。

递归的形式

  • 直接递归:方法自己调用自己。
  • 间接递归:方法调用其他方法,其他方法又回调方法自己。

递归的两个阶段

  • 回溯:一层一层调用下去
  • 递推:满足某种结束条件,结束递归调用,然后一层一层返回

Lambda表达式

Lambda概述

  • Lambda表达式是JDK 8开始后的一种新语法形式。
  • 作用:简化函数式接口的匿名内部类的代码写法。
  • 注意:必须是接口的匿名内部类,接口中只能有一个抽象方法

Lambda表达式的简化格式

函数式接口

  • 首先必须是接口、其次接口中有且仅有一个抽象方法的形式
  • 通常我们会在接口上加一个@FunctionalInterface注解,标记该接口必须是满足函数式接口

体验Lambda表达式

Lambda表达式简化Comparator接口的匿名形式

Lambda表达式的省略写法

1. 参数类型可以省略不写。
2. 如果只有一个参数,参数类型可以省略,同时()也可以省略。
3. 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
4. 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写
posted @ 2023-03-04 09:43  晚点心动。  阅读(25)  评论(0)    收藏  举报