Java之方法

news/2024/10/11 2:42:19/

方法(函数)

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中实现方法重载:

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编译器会自动选择最匹配的方法进行调用。

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: 5System.out.println("sum2: " + sum2); // 输出: sum2: 6System.out.println("sum3: " + sum3); // 输出: sum3: 6.0System.out.println("sum4: " + sum4); // 输出: sum4: 6.5}
}

注意事项

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

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

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

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


http://www.ppmy.cn/news/1537226.html

相关文章

5个免费ppt模板网站推荐!轻松搞定职场ppt制作!

每次过完小长假&#xff0c;可以明显地感觉到&#xff0c;2024这一年很快又要结束了&#xff0c;不知此刻的你有何感想呢&#xff1f;是满载而归&#xff0c;还是准备着手制作年终总结ppt或年度汇报ppt呢&#xff1f; 每当说到制作ppt&#xff0c;很多人的第一反应&#xff0c…

大模型笔记05--coze经典案例分析

大模型笔记05--coze经典案例分析 介绍经典案例分析抖音视频转小红书文案艺术照 & 卡通照片助手艺术照图像流卡通照片图像流多功能图像助手 注意事项说明 介绍 扣子是新一代 AI 应用开发平台&#xff0c;具备完善的生态系统&#xff0c;是国内最出色的AI平台之一。用好coze…

C语言 | 第十三章 | 二维数组 冒泡排序 字符串指针 断点调试

P 120 数组应用案例 2023/1/29 一、应用案例 案例一&#xff1a;创建一个char类型的26个元素的数组&#xff0c;分别 放置’A’-Z‘。使用for循环访问所有元素并打印出来。提示&#xff1a;字符数据运算 ‘A’1 -> ‘B’ #include<stdio.h>void main(){/*创建一个c…

Linux云计算 |【第四阶段】RDBMS1-DAY5

主要内容&#xff1a; 试图概述&#xff08;创建视图VIEW、修改、查看、删除&#xff09;、变量&#xff08;全局变量、会话变量、用户变量、局部变量&#xff09;、存储过程&#xff08;创建、调用、删除存储过程&#xff09;、流程控制结构&#xff08;分支结构&#xff1a;…

蓝桥杯【物联网】零基础到国奖之路:十二. TIM

蓝桥杯【物联网】零基础到国奖之路:十二. TIM 第一节 理论知识第二节 cubemx配置 第一节 理论知识 STM32L071xx器件包括4个通用定时器、1个低功耗定时器&#xff08;LPTIM&#xff09;、2个基本定时器、2个看门狗定时器和SysTick定时器。 通用定时器&#xff08;TIM2、TIM3、…

vue3常用组件通信方法

title: vue3常用组件通信方法 date: 2024-10-06 15:00:54 tags: vue3 组件通信 一、父传子—defineProps 1.父亲 通过属性传值 2.儿子 通过defineProps接收相关的数据 二、子传父 1&#xff09;使用defineExposeref 1.子组件 在子组件中使用defineExpose先暴露出来 2.父…

【C++篇】虚境探微:多态的流动诗篇,解锁动态的艺术密码

文章目录 C 多态详解&#xff08;进阶篇&#xff09;前言第一章&#xff1a;多态的原理1.1 虚函数表的概念1.1.1 虚函数表的生成过程 1.2 虚表的存储位置 第二章&#xff1a;动态绑定与静态绑定2.1 静态绑定2.1.1 静态绑定的实现机制&#xff1a;2.1.2 示例代码&#xff1a; 2.…

软件项目开发流程与团队分工整体认知——基于《信息系统项目管理师教程》(需求分析、系统设计、开发、测试、部署与运维、开发工具与管理软件)

文章目录 1、信息系统项目管理师教程——精简说明2、软件工程开发流程与团队分工详解2.1 需求分析2.2 系统设计2.3 开发2.4 测试2.5 部署与运维 3、开发工具与管理软件4、总结 1、信息系统项目管理师教程——精简说明 在《信息系统项目管理师教程》中&#xff0c;有一些章节对…