030_Java方法

目录

Java方法

https://www.bilibili.com/video/BV12J41137hu/?p=45

方法的定义

  1. 方法是用来完成特定功能的代码片段。

方法的组成

  1. 方法头
    1. 修饰符,定义该方法的访问类型。
    2. 返回值类型。
    3. 方法名,方法名和参数类型共同构成方法签名。
    4. 参数类型。
      1. 实参:调用方法时传递的参数。
      2. 形参:方法中的参数,用来定义参数。
  2. 方法体,定义该方法的功能。

方法的重载

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

方法的重载规则

  1. 方法名称必须相同。
  2. 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
  3. 方法的返回类型可以相同也可以不同。
  4. 仅仅返回类型不同不足以成为方法的重载。

实现理论

方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

命令行传参

package com.qing.method;

public class Demo01 {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]: " + args[i]);
        }
    }
}
D:\code\JavaSE\基础语法\src\com\qing\method>dir
 驱动器 D 中的卷没有标签。
 卷的序列号是 46DA-BD61

 D:\code\JavaSE\基础语法\src\com\qing\method 的目录

2020/10/31  12:43    <DIR>          .
2020/10/31  12:43    <DIR>          ..
2020/10/31  12:43               231 Demo01.java
               1 个文件            231 字节
               2 个目录 307,004,313,600 可用字节

D:\code\JavaSE\基础语法\src\com\qing\method>javac Demo01.java

D:\code\JavaSE\基础语法\src\com\qing\method>java Demo01
错误: 找不到或无法加载主类 Demo01

D:\code\JavaSE\基础语法\src\com\qing\method>cd ../../../

D:\code\JavaSE\基础语法\src>java com.qing.method.Demo01

D:\code\JavaSE\基础语法\src>java com.qing.method.Demo01 Hello World
args[0]: Hello
args[1]: World

D:\code\JavaSE\基础语法\src>

可变参数

  1. JDK1.5开始,Java支持传递同类型的可变参数给一个方法。
  2. 在方法声明中,在指定参数类型后加一个省略号(...)。
  3. 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
  4. 可变参数本质是数组。
package com.qing.method;

public class Demo02 {
    public static void main(String[] args) {
        new Demo02().printMax();
        new Demo02().printMax(7.1, 3, 5);
        new Demo02().printMax(new double[]{7.1, 3, 5});
    }

    //打印最大值
    private void printMax(double... numbers) {
        if (numbers.length == 0) {
            System.out.println("numbers is empty");
            return;
        }
        double max = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] > max) {
                max = numbers[i];
            }
        }
        System.out.println("max: " + max);
    }
}
没有传参
max: 7.1
max: 7.1

递归

递归就是自己调用自己。

递归结构

  1. 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
  2. 递归体:什么时候需要调用自身方法。

最重要的是递归思想。如果深度太大,不介意用递归,会造成内存奔溃。

package com.qing.method;

public class Demo03 {
    public static void main(String[] args) {
        System.out.println("5! = " + f(5));
        System.out.println("4! = " + f(4));
        System.out.println("3! = " + f(3));
    }
    //递归,计算阶乘
    //阶乘:n! = n * (n-1) * (n-2)... * 1
    private static int f(int n) {
        if (n < 1) {
            System.out.println("入参不能小于1");
            return 0;
        }
        if (n == 1) {
            return 1;
        }
        return n * f(n - 1);
    }
}
5! = 120
4! = 24
3! = 6
上一篇:SSH服务的几个超时参数 以及 类似DDOS攻击的方法


下一篇:java--GUI--文本组件