Java方法(狂神说Java)

一、什么是方法

System.out.println(),其中System是类 out是对象 println是方法

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

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

设计方法的原则:

方法的本意思功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能

示例:

public class Demo01 {
    //main方法 这个方法是交给程序管的不是我们自己写的
    public static void main(String[] args) {
        //实际参数:实际调用传递给他的参数
        int sum = add(1,2);
        System.out.println(sum);
        //调用test方法
        test();
    }
    //加法
    //public修饰符可以不要 static修饰符(类变量) int是返回值类型 add方法名
    //形式参数,用来定义的
    public static int add(int a,int b){
        return a+b;
    }
    //void空的意思
    public static void test(){
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <=i ; j++) {
                System.out.print("*");
            }
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

二、方法的重载

规则:

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

示例:

//java只有值传递  没有引用传递(地址传递)
public class Demo02 {
    public static void main(String[] args) {
        double max = max(2.0,2.5);
        System.out.println(max);
    }
    //比较大小
    //方法的重载 方法名一致 方法类型不同 根据类型判断调用哪个
    public static int max(int num1,int num2){
        int result = 0;
        if (num1==num2){
            System.out.println("num1==num2");
            return 0;//终止方法
        }
        if (num1>num2){
            result = num1;
        }else{
            result = num2;
        }
        return result;
    }
    public static double max(double num1,double num2){
        double result = 0;
        if (num1==num2){
            System.out.println("num1==num2");
            return 0;//终止方法
        }
        if (num1>num2){
            result = num1;
        }else{
            result = num2;
        }
        return result;
    }

三、可变参数

  • 在方法声明中,在指定参数类型后加一个省略号(...)
  • 一个方法只能有一个可变参数,它必须是方法的最后一个参数,任何普通参数必须在它之前声明

示例调用可变参数打印最大的值:

public class Demo06 {
    public static void main(String[] args) {
        //调用可变参数的方法
        printMax(34,4,56,54.2,88,142);
        printMax(new double[]{34,4,56,54.2,88,142});
        printMax(1);
    }
    //打印最大的值
    public static void printMax(double...numbers){
        if (numbers.length == 0){
            System.out.println("No arguent passed");
            return;
        }
        double result = numbers[0];
        //排序!
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i]>result){
                result = numbers[i];
            }
        }
        System.out.println("The max value is " + result);
    }
}

四、递归

递归就是:A方法调用A方法!自己调用自己。

递归结构包括两个部分:

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

阶乘递归示例:

//基数小的计算用递归 大的尽量不用递归
public class Demo08 {
    //递归思想
    public static void main(String[] args) {
        System.out.println(f(15));
    }
    //1! 1    这个运算叫阶乘
    //2! 2*1
    //5! 5*4*3*2*1
    public static long f(long n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
}

写一个计算器实现简单运算示例:

//控制台计算器
import java.util.Scanner;
public class Demo10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int a = scanner.nextInt();
        System.out.println("请输入运算符:");
        String b = scanner.next();
        System.out.println("请输入第二个数:");
        int c = scanner.nextInt();
        switch (b){
            case "+":
                System.out.println(a+c);
                break;
            case "-":
                System.out.println(a-c);
                break;
            case "*":
                System.out.println(a*c);
                break;
            case "/":
                System.out.println(a/c);
                break;
            default:
                System.out.println("你的输入不合法");
        }
        scanner.close();
    }
}

 

posted @ 2022-08-23 11:12  asds-lml  阅读(58)  评论(0编辑  收藏  举报