Java之方法

ops/2024/10/11 1:29:23/

方法(函数)

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/ops/123749.html

相关文章

设计模式-解释器模式

解释器模式&#xff08;Interpreter&#xff09;:给定一种语言&#xff0c;定义它的文法表示&#xff0c;并定义一个解释器&#xff0c;该解释器用来根据文法表示来解释语言中的句子 解释器模式描述了如何构成一个简单的语言解释器&#xff0c;主要应用在使用面向对象语言开发的…

【CF2021E】Digital Village(All Version)

题目 给你一张 n n n 个点 m m m 条边的无向图&#xff0c;有 p p p 个关键点。你需要选择 k k k 个点染黑&#xff0c;使得这 p p p 个关键点到这 k k k 个黑点的代价和最小。定义代价为两点之间边权最大的边的最小值。 你需要求出 k 1,2,…,n 的所有答案 E1 n,m,p&l…

go和python打包项目对比

go源码 package mainimport ("fmt" )func main() {fmt.Println(" _____ _____ _____ _____")fmt.Println(" |2 ||2 ||2 ||2 |")fmt.Println(" | ^ || & || v || o |")fmt.Println(" | …

用Python制作数据可视化仪表盘:使用Dash与Plotly构建实时交互式仪表盘

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在数据驱动的世界中,可视化是理解和解释复杂数据的关键工具。通过数据可视化,用户能够快速洞察数据趋势,做出明智决策。而仪表盘作为一种高度集成的可视化工具,能够将多种数据图表汇总到一个界面上,便于实时…

如何评估显卡的硬件解码能力

拿到一张显卡之后&#xff0c;如何评估显卡的硬件解码能力&#xff0c;下面提供一种可以操作的方法供参考。 这里使用的操作系统是linux系统。 linux系统下面&#xff0c;通常用的硬件解码接口有VDPAU&#xff0c;VAAPI, OPENMAX。我们通过调用vaapi接口&#xff0c;来进行硬件…

VR科技云展如何以沉浸式体验引领科技成果新展示

一、VR科技云展的展示方式 VR科技云展通过虚拟现实技术&#xff0c;将展厅移植到虚拟空间中&#xff0c;使观众可以通过互联网在线参观展览。这种展示方式打破了时间和空间的限制&#xff0c;观众只需通过电脑、平板、手机等设备&#xff0c;就能随时随地体验展览。 1、沉浸式漫…

博士找高校教职避坑指南:史上最全的避坑秘籍

在学术的海洋中遨游多年&#xff0c;博士们终于要踏上寻找高校教职的征程。这不仅是职业生涯的新起点&#xff0c;更是一场充满未知与挑战的冒险。今天&#xff0c;就让我们来聊聊那些在寻找高校教职时需要避开的坑&#xff0c;希望能为你的求职之路保驾护航。 1. 薪资结构&am…

【计算机网络】Tcp/IP五层协议,Udp报文组成,Udp与Tcp的区别

Tcp/IP五层协议 TCP/IP模型是计算机网络的核心协议之一&#xff0c;通常被分为五层&#xff0c;每一层都有其独特的功能和作用。以下是TCP/IP模型的五层协议的简要描述&#xff1a; 物理层&#xff1a;这一层涉及实际的物理连接&#xff0c;定义了硬件传输介质的特性&#xff…