天天看点

Java学习笔记:7.Java方法详解

八、Java方法详解

什么是方法

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

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含类或对象中
  • 方法在程序中被创建,在其他地方被引用
  • 方法设计原则:保持方法的原子性,一个方法只完成一个功能,利于后期拓展
    e.g.
    package com.kuang.method;
    
    public class Demo01 {
        //main方法
        public static void main(String[] args) {
            int add=add(1,2);
    
            System.out.println(add);
        }
    
        //加法
        public static int add(int a,int b){
            return a+b;
        }
    }
    
               

方法的定义及调用

语法
修饰符 返回值类型 方法名(参数类型 参数名){
    方法体
  	return 返回值;
}
           
比较大小
package com.kuang.method;

public class Demo02 {
    public static void main(String[] args) {
        int max = max(3, 3);
        System.out.println(max);
    }

    //比大小
    public static int max(int a, int b) {
        if(a==b){
            System.out.println("a=b");
            return a;//终止方法
        }else{
            return a > b ? a : b;
        }
    }
}

           

方法重载

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

方法重载规则:

  • 方法名称必须相同
  • 参数列表必须不同(个数不同,类型不同,参数排列顺序不同)
  • 返回类型可以相同可以不同
  • 返回类型不同不足以构成重载
public static void main(String[] args){
    public static int max(int num1,int num2){
        int resault;
        
        return resault;
    }
    public static int max(double num1,int num2){
        return 
    }
}
           

命令行传参

使用命令行传递参数

package com.kuang.method;

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

           
Java学习笔记:7.Java方法详解

需要在资源管理器中的文件夹下运行cmd,输入

javac Demo03.java

进行编译,运行需要返回至

src

目录下,输入

java 目录名.文件名 参数

运行

Java学习笔记:7.Java方法详解

可变参数

如果出现不清楚多少参数的情况下可以使用可变参数

例如这种情况

public void main(String[] args) {

    }
    public void method(int i){

    }
    public void method(int i,int i1){

    }
    public void method(int i,int i1,int i2){

    }

           

可以使用下面的方法

public void method(int... i) {

}
           
  • 在方法声明中,在指定参数后面加一个省略号

    ...

  • 方法声明中只可定义一个可变参数,必须是方法的最后一个参数,任何普通参数必须在它之前声明

递归

  • 递归就是A方法调用A方法
使用递归实现阶乘
package com.kuang.method;

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(f(5));
    }
    //5! 5*4*3*2*1
    public static int f(int i){
        if(i==1){
            return 1;
        }else{
            return i*f(i-1);
        }
    }
}

           

简易计算器

package com.kuang.method;

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double num1 = 0.0;
        double num2 = 0.0;
        double resault = 0.0;
        String operator = "";

        //运算符
        System.out.print("请输入运算符(输入其他字符退出):");
        if (scanner.hasNext()) {
            operator = scanner.next();
        }
        while (true) {
            if(operator.equals("x")||operator.equals("X")||operator.equals("*")
           ||operator.equals("/")||operator.equals("+")||operator.equals("-")){
                System.out.println("请输入两个数(以空格或回车区分)");
                num1 = scanner.nextDouble();
                num2 = scanner.nextDouble();
            }
            switch (operator) {
                case "*":
                case "x":
                case "X":
                    resault = num1 * num2;
                    break;

                case "/":
                    resault = num1 / num2;
                    break;

                case "+":
                    resault = num1 + num2;
                    break;

                case "-":
                    resault = num1 - num2;
                    break;

                default:
                    System.out.println("程序结束");
                    return;
            }
            System.out.println(num1+operator+num2+"="+resault);
            System.out.print("请输入运算符(输入其他字符退出):");
            if (scanner.hasNext()) {
                operator = scanner.next();
            }
        }
    }
}