方法

何谓方法

Java方法是语句的集合,在一起执行一个功能

Java中的方法为值传递

方法设计原则:原子性,即一个方法完成一个功能,以便于后期扩展

main方法应保持简洁

方法包括方法头方法体

  • 修饰符
  • 返回类型
  • 方法名
  • 参数类型
  • 方法体
修饰符 返回值类型 方法名(参数类型 参数名) {
    //方法体
    ....
    return 返回值;
}

return 除了返回结果外,还可以终止方法

方法的重载

一个类中的两个方法,方法名相同,参数类型不同,规则:

  • 方法名称必须相同
  • 参数列表必须不同(个数、类型、顺序等)
  • 返回值可相同可不同
  • 仅返回类型不同不构成方法的重载

编译器会根据方法的参数个数、类型等去匹配

package com.sgkurisu.method;

public class Demo1 {
    //main方法
    public static void main(String[] args) {
        int sum1 = add(1, 2);
        double sum2 = add(1.0, 2.0);

        System.out.println(sum1);
        System.out.println(sum2);

    }

    //add方法的重载
    public static int add (int a, int b) {
        return a + b;
    }
    public static double add (double a, double b) {
        return a + b;
    }
}

命令行传参

package com.sgkurisu.method;

public class Demo2 {
    public static void main(String[] args) {
        //args数组
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]=" + args[i]);
        }
    }
}

当使用命令行直接在Demo2.java路径下运行时,将会出错

由于以上代码有

package com.sgkurisu.method;

因此需要回退到src目录下运行.class文件(注意:main方法也可以传递参数)

可变参数

  • 在可变参数的数据类型后加...
  • 一个方法只能指定一个可变参数,并且必须是方法的最后一个参数
package com.sgkurisu.method;

public class Demo3 {
	//多个数字比较大小
    public static void main(String[] args) {
        Demo3 demo3 = new Demo3();
        demo3.printMax(3, 5, 3, 66, 23);
        demo3.printMax(new double[] {2, 4, 2, 12, 45});
    }

    public void printMax(double... numbers) {

        if (numbers.length == 0) {
            System.out.println("No argument passed");
            return;
        }
        double result = numbers[0];

        //寻找最大值
        for (int i = 0; i < numbers.length; i++) {
            if (result < numbers[i]) {
                result = numbers[i];
            }
        }
        System.out.println("Max:" + result);

    }
}

递归

自己调用自己

包含两个部分:

  • 递归头:什么时候不调用自身方法,边界条件
  • 递归体:什么时候需要调用自身方法
package com.sgkurisu.method;

public class Demo4 {
    //用递归实现阶乘
    public static void main(String[] args) {
        Demo4 demo4 = new Demo4();
        System.out.println(demo4.f(3));
    }

    public int f (int n) {
        if (n == 1) {
            return 1;
        } else {
            return n * f(n - 1);
        }
    }
}

java使用是栈机制,递归对电脑压力较大,时间开销较长

posted @ 2021-02-10 15:30  sgKurisu  阅读(87)  评论(0)    收藏  举报