【Java基础篇】一文搞懂Java方法的调用与重载(超详细)

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【JavaSE_primary】
在这里插入图片描述

目录

  • 一、方法的概念以及使用
    • 1.1什么是方法
    • 1.2方法定义
    • 1.3方法调用的执行过程
    • 1.4形参和实参的关系
  • 二、方法的重载
    • 方法签名

一、方法的概念以及使用

1.1什么是方法

概念:在Java中,方法是一段包含了一系列语句的可重用代码块。方法用于执行特定的任务或操作,并且可以带有输入参数和返回值。

方法的意义:Java方法的意义在于提高代码的可读性、可维护性、复用性和灵活性。它们是构建模块化、组织良好且易于扩展的程序的重要组成部分。

在Java中,方法格式如下:

[访问修饰符] [返回类型] 方法名([参数列表]) {// 方法体// 包含一系列要执行的语句// 可能包括变量声明、控制流语句、表达式等[return 返回值;]
}

1.2方法定义

我们来举几个具体方法的例子来进行演示,请看:

示例一(add方法):

public static int add(int x,int y) {return x + y;
}

示例二(阶乘和):

//方式一:
public static int facSum1(int n) {int sum = 0;for(int i = 1;i <= n;i++){int ret = 1;for(int j = 1;j <= i;j++){ret *= j;}sum += ret;}return sum;
}
//方式2:
public static int facSum2(int n){int sum = 0;int ret = 1;for(int i = 1;i <= n;i++){ret *= i;sum += ret;}return sum;
}

在定义方法时,我们需要注意以下几个注意事项:

  • 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
  • 方法名字:采用小驼峰命名
  • 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
  • 方法体:方法内部要执行的语句
  • 在java当中,方法必须写在类当中,同时方法不能嵌套定义
  • 在Java中,是不存在方法声明的

1.3方法调用的执行过程

在方法调用时,实参会被传递给对应的形参。当方法被调用时,形参会以实参的值来初始化。在方法体中,可以使用形参来处理传递进来的值。形参和实参之间的传递是通过值传递的方式进行的。

具体调用过程如下:调用方法—>传递参数—>找到方法地址—>执行被调方法的方法体—>被调方法结束返回—>回到主调方法继续往下执行

1.4形参和实参的关系

在 Java 中,对于基本数据类型的形参,形参是实参的值的拷贝。形参的改变不会影响到实参

这里举个例子进行演示:

public static void swap(int x,int y){int tmp = x;x = y;y = tmp;
}
public static void main(String[] args) {int a = 10;int b = 20;System.out.println("交换之前:a="+a+" "+"b="+b);swap(a,b);System.out.println("交换之后:a="+a+" "+"b="+b);
}

结果如下:
在这里插入图片描述

这里补充一点:在Java中,局部变量时存储在栈上,而且不能获取栈上的地址(意思就是没有&a&b这样的说法)。如果要改变或者交换ab这两个变量的话,则必须将其存储到堆上。

另外:方法的返回值是可选的. 有些时候可以没有的,没有时返回值类型必须写成void。

二、方法的重载

在Java中,方法重载是指在同一个类中定义多个方法,这些方法具有相同的方法名但参数列表不同方法重载可以通过改变参数的数量、类型或顺序来实现

方法重载特点如下:

  • 1.方法名相同:被重载的方法必须具有相同的方法名
  • 2.参数列表不同:重载的方法必须具有不同的参数列表,包括参数的个数、类型或顺序的不同
  • 3.返回类型可以不同:方法重载与方法的返回类型无关

下面举个例子:

public int add(int a, int b) {return a + b;
}public double add(double a, double b) {return a + b;
}public int add(int a, int b, int c) {return a + b + c;
}

方法签名

方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。

Java编译器是通过方法签名来识别每个方法的。在编译时会根据方法的签名来唯一识别每个方法,并进行方法调用的匹配。

方法签名由以下部分组成:

1.方法名称:方法的名称用于标识方法本身。
2.参数列表:参数列表指定了方法接受的参数的数量、类型和顺序。参数列表中的每个参数都包含参数的类型和参数的顺序。

注意,方法签名与以下因素无关:

1.方法的返回类型:方法的返回类型不包含在方法签名中,所以在方法重载时,只要方法的签名不同,返回类型可以不同
2.方法的访问修饰符:方法的访问修饰符(例如 public、private 等)也不包含在方法签名中。

方法签名的意义:方法签名的唯一性确保了编译器可以根据参数的类型和数量来正确匹配方法调用。

请看:
在这里插入图片描述
所以,在同一个作用域中不能定义两个相同名称的标识符,否则编译器无法识别(不知道该调用哪一个了),方法签名不一样,调用的方法当然就不一样啦。

嗯,就到这里啦,再见啦友友们!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/88329.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云服务器价格表大全_轻量服务器_CVM云服务器报价明细

腾讯云服务器租用费用表&#xff1a;轻量应用服务器2核2G4M带宽112元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、云服务器CVM S5实例2核2G配置280.8元一年、GPU服务器GN10Xp实例145元7天&#xff0c;腾讯云服务器网长期更新腾讯云轻量…

7.接着跑一下triton官方教程

5.Model Ensemble 在此示例中&#xff0c;我们将探索使用模型集成来仅通过单个网络调用在服务器端执行多个模型。这样做的好处是减少了在客户端和服务器之间复制数据的次数&#xff0c;并消除了网络调用固有的一些延迟。 为了说明创建模型集成的过程&#xff0c;我们将重用第…

19 NAT穿透|python高级

文章目录 网络通信过程NAT穿透 python高级GIL锁深拷贝与浅拷贝私有化import导入模块工厂模式多继承以及 MRO 顺序烧脑题property属性property装饰器property类属性 魔法属性\_\_doc\_\_\_\_module\_\_ 和 \_\_class\_\_\_\_init\_\_\_\_del\_\_\_\_call\_\_\_\_dict\_\_\_\_str…

DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件

操作系统内核与云基础软件 鲲鹏软件构成硬件特定软件 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 操作系统内核Linux系统调用Linux进程调度Linux内存管理Linux虚拟文件系统Linux网络子系统Linux进程间通信Linux可加载内核模块Linux设备驱动程序Linu…

zookeeper启动失败(Error contacting service. It is probably not running.)

问题描述 启动zk时报如下错误&#xff1a; 解决办法 先查日志找找报错原因&#xff1a; 找到zk安装目录下的logs文件夹下的日志文件&#xff0c;查看连接失败原因&#xff1a; 如果是端口问题&#xff0c;修改conf文件&#xff0c;指定端口重新启动即可&#xff1a; 注&a…

SaaS多租户系统架构设计

前言&#xff1a;多租户是SaaS&#xff08;Software-as-a-Service&#xff09;下的一个概念&#xff0c;意思为软件即服务&#xff0c;即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上&#xff0c;客户可以根据工作的实际需求&#xff0c;通过互联网…

深入解析文件系统原理(inode,软硬链接区别)

第四阶段提升 时 间&#xff1a;2023年8月29日 参加人&#xff1a;全班人员 内 容&#xff1a; 深入解析文件系统原理 目录 一、Inode and Block概述 &#xff08;一&#xff09;查看文件的inode信息&#xff1a;stat &#xff08;二&#xff09;Atime、Mtime、Ctime详…

Stable Diffusion 文生图技术原理

图像生成模型简介 图片生成领域来说&#xff0c;有四大主流生成模型&#xff1a;生成对抗模型&#xff08;GAN&#xff09;、变分自动编码器&#xff08;VAE&#xff09;、流模型&#xff08;Flow based Model&#xff09;、扩散模型&#xff08;Diffusion Model&#xff09;。…

【进程间通信】信号

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

JavaScript 中的箭头函数:如何使用简洁的语法

了解有关 JavaScript 箭头函数的所有信息。我们将向您展示如何使用 ES6 箭头语法&#xff0c;以及在代码中利用箭头函数时需要注意的一些常见错误。您将看到许多示例来说明它们的工作原理。 JavaScript 箭头函数随着 ECMAScript 2015&#xff08;也称为 ES6&#xff09;的发布…

爬虫逆向实战(二十七)--某某招标投标网站招标公告

一、数据接口分析 主页地址&#xff1a;某网站 1、抓包 通过抓包可以发现数据接口是page 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现&#xff0c;请求参数是一整个密文 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通…

python进行数据分析:数据预处理

六大数据类型 见python基本功 import numpy as np import pandas as pd数据预处理 缺失值处理 float_data pd.Series([1.2, -3.5, np.nan, 0]) float_data0 1.2 1 -3.5 2 NaN 3 0.0 dtype: float64查看缺失值 float_data.isna()0 False 1 …