方法是一种语法结构,它可以吧一段代码封装成一个功能,以方便重复调用。

【方法的好处】:提高了代码的复用性,让程序的逻辑更清晰。

1.方法定义、调用

1.1、方法完整的定义形式、调用

public static int add(int a,int b){
    int c = a + b;
    return c;
}
  • 调用
int sum = add(10,20);
System.out.println(sum);

【方法格式的注意点】:

  • 方法的修饰符:暂时都使用public static 修饰。
  • 方法申明了具体的返回值类型,内部必须使用return返回对应数据类型的数据
  • 形参列表可以有多个,也可以没有:如果有多个形参 “,”隔开。且没有初始值;

1.2、方法的其他定义形式、调用

【注意事项】

  • 如果方法不需要返回结果,返回值类型必须申明成void,此时方法内部不可以使用 return 返回数据。
  • 方法如果没有参数,或者返回值类型申明为 void 可以成为无参数、无返回值,以此类推。

2.方法使用的常见问题

  • 方法的编写顺序无所谓。
  • 方法与方法之间是平级关系,不能嵌套定义
  • 方法的返回值类型为void,方法内则不能使用 return 返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用 return 返回对应数据类型。
  • return 语句下面,不能编写代码,因为永远执行不到,属于无效的代码
  • 方法不调用就不执行,调用时必须严格匹配方法的参数情况。
  • 有返回值的方法调用时可以选择定义变量接受结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用。

3.方法案例

3.1、定义方法的技巧

【说明】:

  • 修饰符:public static
  • 返回值类型到底写什么是需要分析的
  • 方法名称:自己取,有意义(驼峰命名)
  • 形参列表写什么需要分析

3.2、计算1-n的和返回

需求:定义一个方法,方法中计算出 1-n 的和并返回。

public static void main(String[] args) {
        System.out.println(sum(100));
    }
public static int sum(int n){
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += i;
    }
    return sum;
}

3.2、判断奇偶

需求:拿一个整数,然后调用方法,吧整数交给方法,在方法中输出该数为奇数还是偶数。

public static void main(String[] args) {
        System.out.println(isTrue(2));
}
public static boolean isTrue(int number){
        return number%2==0 ? true:false;
}

3.3、数组求最值案例

需求:找出数组的最大值,可以支持返回任意整形数组的最大值数据

    public static void main(String[] args) {
        System.out.println(getMax(new int[]{10, 100, 50, 80, 4000, 20000, 200}));
    }
    public static int getMax(int[] numbers){
        int max = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            max = max>numbers[i] ? max:numbers[i];
        }
        return max;
    }

4.方法调用的内存图

5.方法的参数传递机制

5.1、基本类型的参数传递

  • 值传递:在传输实参给方法的形参时候,并不是传输实参变量本身,而是传输实参变量中存储的值。

【注意】:

  • 实参:在方法内部定义的变量
  • 形参:在定义方法的时候,“()”中所声明的参数

5.2、引用类型的参数传递

数组存的是地址,即使两个变量名称都是这个地址,改变一个则访问另一个,数组内容改变情况一致

6.方法的参数传递案例

6.1、打印数组内容

【需求】:设计一个方法用于输出任意整形数组的内容,要求输出成如下格式—— ”该数组的内容为:【11,22,33,44,55】“

public class demo_04 {
    public static void main(String[] args) {
        output(new int[]{30,50,74,20});
    }
    public static void output(int[] numbers){
        System.out.print("[");
        for (int i = 0; i < numbers.length; i++) {
            if(i==(numbers.length-1)){
                System.out.print(numbers[i]);
                break;
            }
            System.out.print(numbers[i]+",");
        }
        System.out.print("]");
    }
}

6.2、从数组中查询元素的索引并返回

需求:设计一个方法可以接受整型数组,和需要查询的元素值。最终返回该元素在数组中的索引,如果不存在则返回 -1

public class demo_05 {
    public static void main(String[] args) {
        int index = getIndex(new int[]{20, 30, 40, 50}, 40);
        System.out.println("该数字在数组里的下标为:"+index);
    }
    public static int getIndex(int[] numbers,int number){
        for (int i = 0; i < numbers.length; i++) {
            if(numbers[i]==number){
                return i;
            }
        }
        return -1;
    }
}

6.3、比较两个数组内容是否一样

需求:如果两个数组的类型,元素个数,顺序和内容是一样的我们就认为是相同的数组。

public class Demo_06 {
    public static void main(String[] args) {
        System.out.println(isEqual(new int[]{10, 20, 3}, new int[]{10, 20, 30}));
    }
    public static boolean isEqual(int[] numbers,int[] arrs){
        if(numbers.length == arrs.length){
            for (int i = 0; i < numbers.length; i++) {
                if(numbers[i] == arrs[i]){
                    continue;
                }else {
                    return false;
                }
            }
            return true;
        }
        return false;
    }
}

7.方法的重载

7.1、方法重载的形式、作用

  • 形式:同一个类中,出现多个方法名称相同,但是形参列表不同,那么就是重载方法
  • 作用:可读性好,方法名称相同提示同一类型功能,通过形参不同实现功能差异化的情况,

7.2、方法重载的识别技巧

  • 只要是同一个类中,方法名称相同,形参列表不同,那么就是重载的方法,其他都不用
  • 形参列表不同指的是:形参的个数、类型、顺序,不关心形参的名称

8.return 关键字单独使用

  • 在方法中使用 return 指立即结束该方法

results matching ""

    No results matching ""