当前位置: 首页 > 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;涵盖安装必要的工具和插件、编写简…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...