Java方法的基本用法

Java方法的基本用法

  • 前言
  • 一、什么是方法
    • 方法存在的意义
    • 示例
  • 二、方法定义语法
    • 基本语法
    • 代码示例
    • 注意事项
  • 三、方法调用的执行过程
    • 基本规则
    • 代码示例
      • 计算两个整数相加
      • 计算 1! + 2! + 3! + 4! + 5!
  • 四、实参和形参的关系
    • 代码示例
      • 交换两个整型变量
        • 原因分析
        • 解决办法
  • 五、没有返回值的方法
    • 代码示例


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

Java方法的基本用法包括定义方法(指定方法名、返回类型、参数列表和方法体),调用方法(通过方法名及参数列表调用),以及传递参数(按值传递基本数据类型,按引用传递对象)。


一、什么是方法

方法就是一个代码片段. 类似于 C 语言中的 “函数”.

Java方法是Java语言中用于执行特定任务的一段代码。它是程序的基本构建块之一,常用于组织和封装可重复使用的功能。方法可以接受输入参数,并返回一个值,也可以不接受参数或返回值。在调用方法时,需要提供所需的参数,并根据方法的定义来处理和返回结果。通过使用方法,可以提高代码的可读性、可维护性和重用性。在Java中,每个方法都属于一个类或对象,并且可以在其他方法中调用。方法的语法如下:

修饰符 返回类型 方法名(参数列表) {// 方法体// 执行特定任务的代码return 返回值; // 如果方法有返回值的话
}

方法存在的意义

  1. 是能够模块化的组织代码(当代码规模比较复杂的时候).
  2. 做到代码被重复使用, 一份代码可以在多个位置使用.
  3. 让代码更好理解更简单.
  4. 直接调用现有方法开发, 不必重复造轮子

示例

计算 1! + 2! + 3! + 4! + 5!


public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {int tmp = 1;for (int j = 1; j <= i; j++) {tmp *= j;}sum += tmp;}System.out.println("sum = " + sum);
}

这段代码的作用是计算1! + 2! + 3! + 4! + 5! 的值,并打印出结果。

在程序运行过程中,使用嵌套的两个for循环来计算每个阶乘。外层的for循环从1遍历到5,表示计算1!到5!的值。内层的for循环从1遍历到当前的外层循环变量i的值,表示计算每个数字的阶乘。

在内层循环中,创建一个临时变量tmp,并将其初始化为1。内层循环每次迭代都将tmp乘以当前的j值,从而计算阶乘值。最后,将每个阶乘值加到外层循环的变量sum中。

最后,通过System.out.println()语句打印出计算结果。
在这里插入图片描述
这个代码中使用双重循环, 比较容易写错

二、方法定义语法

基本语法

// 方法定义
public static 方法返回值 方法名称([参数类型 形参 ...]){方法体代码;[return 返回值];}// 方法调用
返回值变量 = 方法名称(实参...);

代码示例

实现一个方法实现两个整数相加

class Test {public static void main(String[] args) {int a = 10;int b = 20;// 方法的调用int ret = add(a, b);System.out.println("ret = " + ret);}// 方法的定义public static int add(int x, int y) {return x + y;}
}

注意事项

  1. publicstatic 两个关键字在此处具有特定含义, 我们暂时不讨论, 后面文章会详细介绍.
  2. 方法定义时, 参数可以没有. 每个参数要指定类型
  3. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void
  4. 方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”.
  5. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.
  6. Java 中没有 “函数声明” 这样的概念

三、方法调用的执行过程

基本规则

  • 定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.

  • 当方法被调用的时候, 会将实参赋值给形参.

  • 参数传递完毕后, 就会执行到方法体代码.

  • 当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行.

  • 一个方法可以被多次调用

代码示例

计算两个整数相加

class Main {public static void main(String[] args) {int a = 10;int b = 20;System.out.println("第一次调用方法之前");int ret = add(a, b);System.out.println("第一次调用方法之后");System.out.println("ret = " + ret);System.out.println("第二次调用方法之前");ret = add(30, 50);System.out.println("第二次调用方法之后");System.out.println("ret = " + ret);}public static int add(int x, int y) {System.out.println("调用方法中 x = " + x + " y = " + y);return x + y;}
}

在这里插入图片描述

计算 1! + 2! + 3! + 4! + 5!

class Main {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {sum += factor(i);}System.out.println("sum = " + sum);}public static int factor(int n) {System.out.println("计算 n 的阶乘中! n = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}
}

在这里插入图片描述
使用方法, 避免使用二重循环, 让代码更简单清晰.

四、实参和形参的关系

代码示例

交换两个整型变量

class Main {public static void main(String[] args) {int a = 10;int b = 20;swap(a, b);System.out.println("a = " + a + " b = " + b);}public static void swap(int x, int y) {int tmp = x;x = y;y = tmp;}
}

在这里插入图片描述

原因分析

刚才的代码, 没有完成数据的交换.

对于基础类型来说, 形参相当于实参的拷贝. 即 传值调用

int a = 10;
int b = 20;
int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;

可以看到, 对 xy 的修改, 不影响 ab.

解决办法

传引用类型参数 (例如数组来解决这个问题)

关于数组我会在后面文章进行讲解

class Main {public static void main(String[] args) {int[] arr = {10, 20};swap(arr);System.out.println("a = " + arr[0] + " b = " + arr[1]);}public static void swap(int[] arr) {int tmp = arr[0];arr[0] = arr[1];arr[1] = tmp;}
}

在这里插入图片描述

五、没有返回值的方法

方法的返回值是可选的. 有些时候可以没有的.

代码示例

class Main {public static void main(String[] args) {int a = 10;int b = 20;print(a, b);}public static void print(int x, int y) {System.out.println("x = " + x + " y = " + y);}
}

在这里插入图片描述
另外, 如刚才的交换两个整数的方法, 就是没有返回值的.


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

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

相关文章

初识java——javaSE (6)接口的实现——比较器与深拷贝,浅拷贝

文章目录 前言一 比较器1.1 关于两个对象的比较1.2 Comparable接口&#xff1a;1.3 Arrays.sort方法的实现1.4 比较器的实现Comparator接口 二 深拷贝与浅拷贝2.1 浅拷贝&#xff1a;Cloneable接口&#xff1a;clone方法&#xff1a;实现拷贝&#xff1a;浅拷贝&#xff1a; 2.…

Python3 笔记:Python的所有关键字

查看Python的关键字首先需要用import导入keyword模块 import keyword # 查看Python的所有关键字&#xff0c;先用import导入keyword模块 print(keyword.kwlist) 运行结果&#xff1a; [False, None, True, and, as, assert, async, await, break, class, continue, def, …

MQ如何保证消息不丢失

MQ如何保证消息不丢失 问题分析具体分析及解决方案RabbitMQ生产者RabbitMQ配置消费者 KafkaKafka配置消费者 问题分析 从Kafka和RabbitMQ进行分析&#xff0c;MQ消息丢失的情况有生产者推送消息时数据丢失&#xff0c;MQ中间件宕机情况下数据丢失&#xff0c;消费者消费时消息…

GoLand map中的并发问题——为什么会造成并发问题?该怎么解决?

GoLand map中的并发问题——为什么会造成并发问题&#xff1f;该怎么解决&#xff1f; 问题提出原因解析具体原因竞态检测器 如何解决并发问题呢&#xff1f;方法一 &#xff1a; 使用sync.Mutex方法二&#xff1a; 使用sync.Map我们首先了解一下sync.Map的常用方法&#xff1a…

2024.5.24.python.exercise

# python文件操作 # f open("打字版.txt", "a", encoding"UTF-8") # writer input("请输入你想要写入到文件的内容") # f.write(writer) # f.flush() # f.close() # f open("打字版.txt", "r", encoding"…

代码随想录算法训练营第三十九天 | 738.单调递增的数字、968.监控二叉树 (可以跳过)

监控二叉树同样的等代码随想录刷完后&#xff0c;再回头来看&#xff0c;先跳过 738.单调递增的数字 代码随想录 解题思路 例如&#xff1a;98&#xff0c;一旦出现strNum[i - 1] > strNum[i]的情况&#xff08;非单调递增&#xff09;&#xff0c;首先想让strNum[i - 1]--…

游戏引擎支持脚本编程的好处

哈喽呀&#xff0c;大家好&#xff0c;淼淼又来和大家见面啦&#xff0c;咱们今天来聊聊游戏引擎&#xff0c;游戏引擎作为现代游戏开发的核心&#xff0c;它集成了图形渲染、物理模拟、音频处理、动画系统、输入输出控制等多种复杂技术于一体&#xff0c;为开发者提供了一个高…

ASP+ACCESS基于WEB网上留言板

摘要 本文概述了ACCESS数据库及其相关的一些知识&#xff0c;着重论述ACCESS数据库和ASP的中间技术&#xff0c;构建一个简单的留言板。具体的实现是构造一个留言板系统&#xff0c;能很方便的和同学沟通和交流。留言板具有功能强大、使用方便的特点。用户以个人的身份进入&am…

瑞芯微RV1126——人脸识别源码分析

本节内容主要分为3部分&#xff0c;第一部分是流程结构图;第二部分为人脸识别代码流程;第三部分为具体的代码分析。 1.流程结构图 2.人脸识别代码流程 1、人脸数据的初始化&#xff1a; init_all_rockx_face_data();init_face_data();2、创建rtsp会话&#xff0c;这里包括发…

一个典型的分布式缓存系统是什么样的?no.32

分布式 Redis 服务 由于本课程聚焦于缓存&#xff0c;接下来&#xff0c;我将以微博内的 分布式 Redis 服务系统为例&#xff0c;介绍一个典型的分布式缓存系统的组成。 微博的 Redis 服务内部也称为 RedisService。RedisService 的整体架构如图所示。主要分为Proxy、存储、集…

产品推荐 | 基于Xilinx XCKU115的半高PCIe x8 硬件加速卡

一、板卡概述 本板卡系我公司自主研发&#xff0c;采用Xilinx公司的XCKU115-3-FLVF1924-E芯片作为主处理器&#xff0c;主要用于FPGA硬件加速。板卡设计满足工业级要求。如下图所示&#xff1a; 二、功能和技术指标 板卡功能 参数内容 主处理器 XCKU115-3-FLVF1924-E 板卡…

UE4/UE5像素流送云推流:多人访问不稳定、画面糊、端口占用多等

UE4/UE5想要实现网页访问&#xff0c;很多工程师会选择guan方的像素流送。但这个技术要求在模型开发初期就接入。对于一些已有UE模型是无法进行流化的。虽然也可以解决新UE模型的网页访问问题&#xff0c;但在实际的应用中&#xff0c;点量云流也收到很多反馈说&#xff0c;使用…

netty-socketio 集群随记

实现netty-socketio集群的方式 代码实例 PostConstructpublic void subscribe() {pubSubStore.subscribe(PubSubType.DISPATCH, new PubSubListener<DispatchMessage>() {Overridepublic void onMessage(DispatchMessage message) {log.debug("subscribe: {}"…

Python爬取B站视频:封装一下

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

大数据Hadoop之-工具HIVE(一)

大数据Hadoop之——数据仓库Hive HIVE介绍Hive是基于Hadoop的一个数据仓库(Data Aarehouse,简称数仓、DW),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。是用于存储、分析、报告的数据系统。 在Hadoop生态系统中,HDFS用于存储数据,Yarn用于资源管理…

解释Spring Bean的生命周期

Spring Bean的生命周期涉及到Bean的创建、配置、使用和销毁的各个阶段。理解这个生命周期对于编写高效的Spring应用和充分利用框架的功能非常重要。下面是Spring Bean生命周期的主要步骤&#xff1a; 1. 实例化Bean Spring容器首先将使用Bean的定义&#xff08;无论是XML、注…

使用Golang调用腾讯云邮件模版发送邮件

文章目录 一、腾讯云邮件模版创建1.1 发信域名配置1.2 发信地址设置1.3 发信模版设置 二、通过Golang发送邮件2.1 代码示例2.2 代码说明 三、常见问题3.1 UnsupportedRegion3.2 InvalidTemplateID 本文档介绍了如何使用Golang编写代码&#xff0c;通过腾讯云邮件服务&#xff0…

【Linux】中的常见的重要指令(中)

目录 一、man指令 二、cp指令 三、cat指令 四、mv指令 五、more指令 六、less指令 七、head指令 八、tail指令 一、man指令 Linux的命令有很多参数&#xff0c;我们不可能全记住&#xff0c;我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: m…

白嫖免费图床!CloudFlare R2太香了!

1 为啥要折腾搭建一个专属图床&#xff1f; 技术大佬写博客都用 md 格式&#xff0c;要在多平台发布&#xff0c;图片就得有外链后续如博客迁移&#xff0c;国内博客网站如掘金&#xff0c;简书&#xff0c;语雀等都做了防盗链&#xff0c;图片无法迁移 2 为啥选择CloudFlare…

对话太医管家CEO徐晶:数字化技术正在为健康管理行业带来新平衡丨数字思考者50人...

ITValue 钛媒体特别专题策划《数字思考者50人》&#xff1a;探访中国深刻的数字化思考者群体。我们理解的“TechThinker”&#xff0c;涵盖了中国数字化浪潮中的技术践行者、政策制定者与投资决策者。在这场长达10年的乘风破浪中&#xff0c;每个人都在分享技术进步的果实&…