4、方法

63 阅读3分钟

方法

1、方法概述

方法本质是一个带有标识符的方法块,进去的是参数,出来的是返回值。

方法不能嵌套,方法的执行顺序和定义的位置无关

方法的定义

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

注意事项

  • 修饰符暂时使用public static

  • 方法可以不传入参数

  • 方法名称命名采用驼峰命名法,第一个单词首字母小写,后续单词首字母大写

  • return的功能

    • 返回返回值
    • 立即结束当前函数

案例:计算两个整数的和

public static int getSum(int a,int b){
    return a+b;
}

方法的调用

格式方法名(参数)

案例:调用上述案例的方法

public static void main(String[] args) {
    //方法的调用
    int a = getSum(10,20);
    System.out.println(a);
}
2、void

如果一个方法不需要返回值,那么返回值类型处使用void

在void修饰方法时,return可以省略

案例:定义一个方法打印1-100的整数

public static void printInt(){
    for(int i = 1; i <= 100;i++){
        System.out.println(i);
    }
}
3、方法重载(Overload)

方法重载概述

  • 在一个类中存在一个以上的同名方法,只要方法参数类型或个数不同;

方法重载的特点

  • 与返回值类型无关,和参数名无关,只关注参数列表
  • 重载本质上是能够区分方法在调用时,调用的是哪个方法即可
public class demo {
    public static void main(String[] args) {
        System.out.println(sum(1, 2));
        System.out.println(sum(1, 2, 3));
        System.out.println(sum(1, 1.2));

    }
    
    public static int sum(int a,int b,int c){
        return  a + b + c;
    }

    public static int sum(int a,int b){
        return  a + b;
    }

    public static double sum(int a,double b){
        return  a + b;
    }
}

4、方法参数传递问题值

Java中只有值传递

  • 参数传递

    • 可以理解为当我们要调用一个方法时,会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值
  • 形式参数

    • 在定义方法时,参数列表中的变量,称之为形式参数,简称形参
  • 实际参数

    • 在方法调用时,传入给方法的数值,我们称之为实际参数,简称实参
  • 对于基本数据类型和String类型而言,形参的改变不会影响到实参

public class demo {
    public static void main(String[] args) {
        int a =100;
        System.out.println(a);
        sum(a);
        System.out.println(a);

    }
    
    public static void sum(int a){
        a += 100;
        System.out.println(a);
    }
    
}
  • 对于引用数据类型而言,形参的改变会影响实参
 public static void main(String[] args) {
        int[] a ={1,2,3,4,5};
        System.out.println(Arrays.toString(a));
        sum(a);
        System.out.println(Arrays.toString(a));
    }

    public static void sum(int[] a){
        for (int i = 0; i < a.length; i++) {
            a[i] += 100;
        }
        System.out.println(Arrays.toString(a));
    }
5、方法的递归

在方法中调用自身的方法。可以将复杂的业务逻辑看作一个个小的业务逻辑的循环。

递归一定要保证递归一定次数后可以结束,否则会出现栈溢出错误(StackOverflowError)

  • 汉诺塔问题

    public class demo {
        public static void main(String[] args) {
        //汉诺塔问题64
            move(12,'A','B','C');
    
        }
    
    
        /**
         * @param n 汉诺塔问题有多少个圆盘
         * @param A 初始柱子
         * @param B 辅助柱子
         * @param C 目标柱子
         */
        public static void move(int n,char A,char B,char C) {
            if (n == 1) System.out.println(A + "->" + C);
            move(n-1,A,C,B);
            System.out.println(A + "->" + C);
            move(n-1,B,A,C);
        }
    }
    
6、全局变量
  • 在类中方法外定义的变量时全局变量
  • 暂时使用public static 来修饰
  • 全局变量全局可用
public class demo {
    public static int b = 0;
    
    public static void main(String[] args) {
        int a =100;
        System.out.println(a);
        System.out.println(b);
        sum(a);
        System.out.println(a);
        System.out.println(b);
    }

    public static void sum(int a){
        a += 100;
        b += 100;
        System.out.println(a);
    }
}
7、文档注释
  • 文档注释格式
/**
  * @param 
  * @return
  */
  • 生成文档
    • 工具 -> 生成javaDoc
    • 填写相关设置,点击生成