当前位置: 首页 > article >正文

Java之方法

方法(函数)

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) { ... } // 编译错误
    


http://www.kler.cn/news/341933.html

相关文章:

  • Spark练习json文件-统计问答数据
  • 5、python基础语法
  • 使用 Go 和 Gin 框架构建简单的用户和物品管理 Web 服务
  • 【软件工程】数据流图DFD
  • 告别下载龟速,拥抱IDM6.42版本下载器!飞一般感觉!
  • java方法对象案例
  • underfill胶水的作用是什么?
  • 【Linux第一弹】- 基本指令
  • 超级智能“试衣镜”!GarDiff:高保真保持目标人物特征和服装细节,虚拟试穿技术新SOTA!
  • 005讲:打开CAD自动加载字体-----设置样板文件——CAD知识讲堂
  • 前端日期插件dayjs
  • 57. QT中简单实现发布订阅机制
  • 一文解读数据中台附搭建指南
  • PHP基本语法总结
  • 排队模型和贪心算法,贪心算法在算力共享排队系统中的应用
  • MySQL基础篇 - 事务
  • 最佳语音识别 Whisper-large-v3-turbo 上线,速度更快(本地安装 )
  • RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录
  • 台球助教小程序开发之打造个性化教学新模式
  • 马哥亲讲k8s集群搭建