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

java(2)方法的使用


 目录

1.前言

2.正文

2.1方法的定义

2.2方法的调用过程

2.3方法的实参与形参

2.3.1形参

2.3.2实参

2.3.3参数传递

2.4方法的重载

3.小结


1.前言

哈喽大家好啊,今天博主继续带领大家学习java的基本语法,java的基础语法部分打算用六到七篇博文完成讲解,最后再用一个小项目加强自己的熟练度,废话不多说,现在开始。

2.正文

2.1方法的定义

java中的方法,我个人感觉可以对标C语言中的函数来方便理解。在下文中。我仅反复用一段凝练的代码来讲清楚方法。

在Java中,方法是一段用于执行特定任务的代码块,它可以接受参数,执行操作,并返回结果。具体定义格式如下:

[修饰符] 返回类型 方法名(参数列表) {// 方法体
}
  • 修饰符:如publicprivatestaticfinal等,用于控制方法的访问权限和行为。具体在以后的文章会细讲。
  • 返回类型:方法执行完毕后返回的数据类型,如intStringvoid(无返回值)等。
  • 方法名:方法的名称,一般采用小驼峰命名。
  • 参数列表:方法执行时需要的参数,参数之间用逗号分隔。如果没有参数,可以省略参数列表或者写为空括号()

例如在下面这段代码中:

    public static int Add(int x,int y){return x+y;}public static void main(String[] args) {int a = 1;int b = 2;System.out.println(Add(a,b));}

我们在sout语句中调用了Add方法,其中public,static为修饰符,int为返回类型,Add为方法名,int x,int y为参数。

2.2方法的调用过程

在这里我们梳理清楚方法调用的过程:

  1. 首先在主调方法里调用目标方法。
  2. 将参数传递过去(这里有实参和形参俩个概念,下文讲解)。
  3. 找到方法的地址后,执行方法体。
  4. 被调方法结束,回到主调方法中继续往下执行。

这里需要注意的一点是:

方法在没被调用的时候是不会被执行的,只有被调用时才会执行。

所以下面俩段代码的输出结果是一致的:

    public static void main(String[] args) {int a = 1;int b = 2;System.out.println(Add(a,b));}public static int Add(int x,int y){return x+y;}
    public static int Add(int x,int y){return x+y;}public static void main(String[] args) {int a = 1;int b = 2;System.out.println(Add(a,b));}

main方法与Add方法的顺序不影响程序运行结果。

2.3方法的实参与形参

参数是方法执行时需要的输入值,这些参数在方法定义中被称为形参,而在方法调用时提供的参数的main方法中被称为实参。

2.3.1形参

形参是方法定义时声明的参数,它们在方法的参数列表中指定。形参相当于方法内部的局部变量,它们在方法被调用时创建,并在方法执行完毕后销毁。形参的主要用途是接收实参传递过来的值。

特点:

  • 形参是方法定义的一部分。
  • 形参只在方法被调用时存在。
  • 形参的值由实参提供。

2.3.2实参

实参是方法调用时传递给方法的实际值。实参可以是常量、变量、表达式或者方法的返回值。实参的值在方法调用时被传递给形参。

特点:

  • 实参是方法调用的一部分。
  • 实参可以是任何类型的值,包括基本数据类型和引用数据类型。
  • 实参的值在方法调用时确定。

则还是在下段代码中,a和b即为实参,而x和y为形参。

    public static void main(String[] args) {int a = 1;int b = 2;System.out.println(Add(a,b));}public static int Add(int x,int y){return x+y;}

2.3.3参数传递

参数传递的方式有两种:传递值和传递引用。

  1. 传递值

    • 基本数据类型(如intdoublechar等)的参数传递是通过值传递的。
    • 当方法被调用时,实参的值会被复制到形参中。
    • 方法内部对形参的修改不会影响到实参。
  2. 传递引用

    • 引用数据类型(如对象、数组等)的参数传递是通过引用传递的。
    • 当方法被调用时,实参的引用(内存地址)会被复制到形参中。
    • 方法内部对形参的修改会影响到实参,因为它们指向同一个对象。

2.4方法的重载

重载是一种允许同一个类中存在多个同名方法,但这些方法的参数列表(参数的类型、数量或顺序)不同的特性。具体规则如下:

  1. 方法名相同:在同一个类中,重载的方法必须具有相同的方法名。
  2. 参数列表不同:参数列表必须在类型、数量或顺序上有所不同。
  3. 返回类型不相关:方法的返回类型不作为重载的依据。即使两个方法的返回类型不同,只要它们的参数列表相同,它们就不能被认为是重载的方法。
  4. 访问修饰符不相关:方法的访问修饰符(如publicprivate等)也不影响重载。

将上文的代码稍作更改:

    public static void main(String[] args) {int a = 1;int b = 2;int c = 3;System.out.println("三数相加:");System.out.println(Add(a,b,c));System.out.println("俩数相加:");System.out.println(Add(a,b));}public static int Add(int x,int y){return x+y;}public static int Add(int x,int y,int z){return x+y+z;}

我们可看到有俩个Add方法,但编译器会自动根据你所调用参数的数量,类型等不同来最终确定你所要调用的方法究竟是哪一个。

3.小结

今天关于方法的分享到这里就结束了,喜欢的小伙伴多多支持,别忘了点赞收藏支持一下哦,你的支持就是对我最大的鼓励。

相关文章:

java(2)方法的使用

目录 1.前言 2.正文 2.1方法的定义 2.2方法的调用过程 2.3方法的实参与形参 2.3.1形参 2.3.2实参 2.3.3参数传递 2.4方法的重载 3.小结 1.前言 哈喽大家好啊,今天博主继续带领大家学习java的基本语法,java的基础语法部分打算用六到七篇博文完…...

基于对数变换的图像美白增强,Matlab实现

博主简介:matlab图像处理(QQ:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于对数变换的图像美白增强,用matlab实现。 一、案例背景和算法介绍 这次案例是美白算法&…...

MySQL高阶1873-计算特殊奖金

目录 题目 准备数据 分析数据 总结 题目 编写解决方案,计算每个雇员的奖金。如果一个雇员的 id 是 奇数 并且他的名字不是以 M 开头,那么他的奖金是他工资的 100% ,否则奖金为 0 。 返回的结果按照 employee_id 排序。 准备数据 Crea…...

Ngnix 在windows上的简单使用

安装 下载链接: nginx: download 选择页面中 Stable version 下的windows版本直接下载解压到本地。 运行nginx: 解压到本地后,结构如图: cmd 进入到上图的根目录,运行 start nginx ,即可开启。 打开 http://localhost 进行查看,如果正常打开nginx的测试页面,则说…...

嵌入式开发--STM32延时函数重构

在做嵌入式开发的时候,经常需要用到延时函数,STM32为我们提供了一个标准的毫秒级延时函数:HAL_Delay()。这个函数用起来很方便,括号内的数就是延时的毫秒数。 但是程序中如果需要用到看门狗的话呢,这玩意需要经常喂的…...

OpenAI最新发布的o1-preview模型,和GPT-4o到底哪个更强?

近日,OpenAI又出新作,正式推出了名为o1的新模型,这是其“推理”系列的首个成员,自然引起了业界的广泛关注。本文旨在全面剖析o1模型的核心特征、独特优势,并通过与先前版本GPT-4o的细致对比,为读者揭示这一…...

基于Python+SQLite的课程管理系统

系统需求简介 1.1需求分析 实现一个具体的课程管理系统。按照软件工程思路设计简化的专业课数据库,尽量模拟现有专业课程一个学期的选课排课原型实际情况。(注:本系统由本人单独设计、开发完成) 1.2 数据结构需求分析 课程管理…...

每日一练 | USG系统默认安全区域

01 真题题目 关于USG系统(华为的安全网关产品)的安全防火墙的默认安全区域的描述,正确的是: A. 默认安全区域可以删除 B. 默认安全区域可以修改安全级别 C. 默认安全区域不能删除,但可以修改安全级别D. 默认安全区域…...

技术老总眼中的品宣与促销:挑战与对策

在许多技术驱动的企业中,技术老总们往往对产品研发和技术创新拥有深刻的理解,然而当涉及市场营销,特别是“品宣”(品牌宣传)与“促销”时,他们的观念可能相对简单,有时甚至认为这两者没有本质的…...

[全网首篇]关于 VMSA-2024-0019 安全公告(CVE-2024-38812、CVE-2024-38813)的说明与解决方案

漏洞说明: CVE-2024-38812 CVE 描述: vCenter Server 在实现 DCERPC 协议时存在堆溢出漏洞。VMware 已将此问题的严重性评估 为临界严重性范围,CVSSv3 的最高基本分数为 9.8。 已知攻击: 具有 vCenter Server 网络访问权限…...

监控易监测对象及指标之:全面监控GBase数据库

在数字化时代,数据库作为企业核心数据资产的管理中心,其稳定性和性能直接关系到业务的连续性和企业的运营效率。GBase数据库作为高性能的分布式数据库系统,广泛应用于各类业务场景。为了确保GBase数据库的稳定运行和高效性能,对其…...

推荐五种msvcr71.dll丢失的解决方法,msvcr71.dll为什么会丢失?

当你的电脑提示msvcr71.dll丢失时是什么情况?为什么会出现这样的问题?msvcr71.dll丢失和什么有关呢?那么msvcr71.dll丢失应该如何解决呢?今天就和大家聊聊msvcr71.dll丢失的解决办法的详细解决步骤。 msvcr71.dll丢失是否与系统更…...

Java 内存模型(JMM)

JMM,全称 Java Memory Model ,中⽂释义Java内存模型 1. 概述 对于 Java 程序员来说,在虚拟机⾃动内存管理机制下,不再需要像 C/C 程序开发程序员这 样为每⼀个 new 操作去写对应的 delete / free 操作,不容易出现内存…...

用于安全研究的 Elastic Container Project

作者:来自 Elastic Andrew Pease•Colson Wilhoit•Derek Ditch 使用 Docker 启动 Elastic Stack 序言 Elastic Stack 是一个模块化数据分析生态系统。虽然这允许工程灵活性,但建立开发实例进行测试可能很麻烦。建立 Elastic Stack 的最简单方法是使用…...

STM8L101低功耗的理解

一.通过降低时钟频率来降低功耗: 规格书如图 1.code 从flash启动,主频率是16Mhz时,功耗测量2.51ma左右,对应程序如下: 2.code从flash启动,主频率是2Mhz时(上电默认值),功…...

Kotlin cancel CoroutineScope.launch的任务后仍运行

Kotlin cancel CoroutineScope.launch的任务后仍运行 import kotlinx.coroutines.*fun main() {runBlocking {val coroutineScope CoroutineScope(Dispatchers.IO)val job coroutineScope.launch {var i 0while (i < Int.MAX_VALUE) {iprintln(i)}}// 2ms 取消协程delay(…...

你是不是分不清哪些字体是商用,哪些非商用?快来看,免得莫名其妙负债。

前言 最近发现有好多小伙伴在做PPT的时候&#xff0c;都有一个很不好的习惯&#xff1a;没有调整好字体。 这里说的没有调整好字体的意思是&#xff1a;在一些公开发布的内容上使用一些可能造成侵权的字体。 字体侵权‌的后果相当严重。轻者可能面临法律纠纷&#xff0c;重者…...

新电脑工作流搭建记录-前端篇

vscode&#xff1a; url: Visual Studio Code - Code Editing. Redefined 插件&#xff1a;Chinese、git history、git graph、codelf、css peek、auto closed tad、auto rename tag、Quokka.js、Image preview Node 官网直接下载&#xff1a;下载 | Node.js node版本管理…...

XXL-JOB 漏洞大全

一、前言 在当今的数字化时代&#xff0c;任务调度平台对于企业级应用来说至关重要。它们负责自动化和协调各种时间敏感或周期性的任务&#xff0c;确保业务流程的顺畅运行。XXL-JOB作为一款流行的分布式任务调度平台&#xff0c;因其强大的功能和易用性&#xff0c;被广泛部署…...

使用 Visual Studio Code 配置 C/C++ 开发环境

Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款非常流行的代码编辑器&#xff0c;提供了丰富的扩展和配置支持&#xff0c;使其成为进行 C/C 开发的一款理想工具。本文将详细介绍如何在 VSCode 中配置 C/C 开发环境&#xff0c;涵盖安装必要的工具和插件、编写简…...

STM32与ESP8266的使用

串口透传 “透传”通常指的是数据的透明传输&#xff0c;意思是在不对数据进行任何处理或修改的情况下&#xff0c;将数据从一个接口转发到另一个接口。值得注意的是要避免串口之间无限制的透明&#xff0c;可以采用互斥锁的方式进行限制使用方法 对USART1和USART3(用他俩举例…...

【计算机网络】数据链路层深度解析

概述三个重要问题封装成帧差错检测可靠传输 使用广播信道的数据链路层数据链路层的互连设备 媒体接入MAC地址集线器与交换机区别以太网交换机生成树协议STP 概述 链路就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点。数据链路是指把实现通信…...

【基于轻量型架构的WEB开发】【章节作业】

作业1 mybatis核心对象、配置文件和映射文件 一. 单选题&#xff08;共10题&#xff0c;50分&#xff09; 1. (单选题)以下关于<select>元素及其属性说法错误的是()。 A. <select>元素用来映射查询语句,它可以帮助我们从数据库中读取出数据,并组装数据给业务开发…...

一张图解析FastAdmin中的表格列表(bootstrap-table)的功能(备份)

功能描述 请根据图片上的数字索引查看对应功能说明。 1.菜单名称和描述 默认生成的CRUD是没有菜单名称和描述显示的&#xff0c;如果需要显示则可以修改权限管理->菜单规则&#xff0c;给对应菜单的添加上备注信息后即可显示&#xff0c;支持HTML 2.TAB过滤选项卡 在一键…...

【数据结构】假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。

编程题: 假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。 分析: 算法描述: 非递归中序遍历二叉树的算法使用栈来辅助实现。首先,从根节点开始,沿着左子树不断向下, 将每个节点压入栈中。当到达最左端节点后,开始出栈并访问节点,接着转向右子树,重…...

李宏毅结构化学习 02

文章目录 一、上篇博文复习二、Separable Case三、Non-separable Case四、Considering Errors五、Regularization六、Structured SVM七、Cutting Plane Algorithm for Structured SVM八、Multi-class and binary SVM九、Beyond Structured SVM 一、上篇博文复习 图中x表示输入的…...

Android AlertDialog圆角背景不生效的问题

一行解决: window?.setBackgroundDrawableResource(android.R.color.transparent) 原文件: /*** Created by Xinghai.Zhao* 自定义选择弹框*/ SuppressLint("InflateParams", "MissingInflatedId") class CustomDialog(context: Context?) : AlertDia…...

探讨基于AI技术的相亲交友系统设计与实现

摘要 随着人工智能技术的发展&#xff0c;相亲交友领域也开始引入AI技术来改善用户体验&#xff0c;提高匹配成功率。本文探讨了如何利用AI技术设计并实现一个智能化的相亲交友系统&#xff0c;该系统能够根据用户的行为数据和个人偏好&#xff0c;自动推荐合适的潜在伴侣。通…...

(2024.9.20)Endnote插入的参考文献字号太大怎么办?

1、序言 常常写论文的人都知道&#xff0c;插入参考文献时&#xff0c;格式调整到让人头大。Endnote的使用大大方便了我们的同时&#xff0c;也意味着我们要学习软件的使用方法。最近重新安装了一下Endnote&#xff0c;插入的文献字体大小就像抽风了一样。在还没有写完文章之前…...

DataGrip在Windows和MacOS平台上的快捷键

0. 背景信息 No.说明1测试DataGrip版本号 : 2024.2.2 1. Windows下快捷键 2. MacOS下快捷键...