Java之方法

发布于:2024-10-15 ⋅ 阅读:(134) ⋅ 点赞:(0)

方法(函数)

Java中的方法必须定义在类或接口中。

package day2;

import java.util.Scanner;

public class way {
    public static void main(String[] args) {
        int arr[] = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) arr[i] = sc.nextInt();
        test(arr);
        System.out.println(arr[0]);
    }

    //定义一个方法
    public static void test(int arr[]) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
        //可以直接改变main函数当中的值
        arr[0] = 10;
        System.out.println();
    }

  
}

在 Java 中,当你将变量传递给方法时,传递方式取决于变量的数据类型:基本数据类型(如 int, double, boolean 等)是通过值传递的,而对象引用(如数组、对象等)是通过引用传递的,也就是可以在方法当中改变对象的值的。

方法重载的基本概念

定义

方法重载指在同一个类中,方法名相同但参数列表(参数类型、个数或顺序)不同的多个方法。返回类型可以相同也可以不同,但仅凭返回类型的不同,不能实现方法重载。

规则

  1. 方法名相同:所有重载的方法必须具有相同的方法名。
  2. 参数列表不同:重载的方法必须在参数列表上有区别,可以通过以下方式实现:
    • 参数的类型不同
    • 参数的个数不同
    • 参数的顺序不同
  3. 返回类型可以相同也可以不同返回类型不是方法重载的依据,不能仅通过返回类型的不同来实现方法重载。
  4. 访问修饰符和异常声明可以不同:方法的访问修饰符(如publicprivate)和抛出的异常类型可以不同,但这不会影响方法重载

方法重载的示例

以下是一个简单的示例,展示如何在Java中实现方法重载:

public class Calculator {

    // 加法方法,两个整数
    public int add(int a, int b) {
        return a + b;
    }

    // 加法方法,三个整数
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // 加法方法,两个双精度数
    public double add(double a, double b) {
        return a + b;
    }

    // 加法方法,两个整数和一个双精度数
    public double add(int a, int b, double c) {
        return a + b + c;
    }
}

在上述示例中,Calculator 类中定义了多个名为 add 的方法,它们通过不同的参数列表来实现重载:

  1. add(int a, int b):接受两个整数参数。
  2. add(int a, int b, int c):接受三个整数参数。
  3. add(double a, double b):接受两个双精度数参数。
  4. add(int a, int b, double c):接受两个整数和一个双精度数参数。

根据传入参数的不同,Java编译器会自动选择最匹配的方法进行调用。

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();

        int sum1 = calc.add(2, 3); // 调用 add(int, int)
        int sum2 = calc.add(1, 2, 3); // 调用 add(int, int, int)
        double sum3 = calc.add(2.5, 3.5); // 调用 add(double, double)
        double sum4 = calc.add(1, 2, 3.5); // 调用 add(int, int, double)

        System.out.println("sum1: " + sum1); // 输出: sum1: 5
        System.out.println("sum2: " + sum2); // 输出: sum2: 6
        System.out.println("sum3: " + sum3); // 输出: sum3: 6.0
        System.out.println("sum4: " + sum4); // 输出: sum4: 6.5
    }
}

注意事项

  1. 避免模糊调用:在方法重载时,参数类型和顺序的变化可能导致调用时的歧义,尤其是在自动类型转换的情况下。例如:

    public void display(int a, double b) { ... }
    public void display(double a, int b) { ... }
    
    // 调用
    display(1, 2); // 编译器无法确定调用哪个方法,可能导致编译错误
    

  2. 返回类型不参与重载:仅通过改变返回类型而不改变参数列表,无法实现方法重载。例如:

    public int compute(int a) { ... }
    public double compute(int a) { ... } // 编译错误
    


网站公告

今日签到

点亮在社区的每一天
去签到