【Java】——方法的使用(从入门到进阶)

在这里插入图片描述
🎁个人主页:User_芊芊君子
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:【Java】内容概括
在这里插入图片描述

在这里插入图片描述

文章目录:

  • 1.方法的概念及使用
    • 1.1 什么是方法?
    • 1.2 方法的意义
    • 1.3 方法的定义
    • 1.4 示例
    • 1.5 方法的调用
    • 1.6 实参和形参的关系
    • 1.7 返回值
  • 2.方法重载
    • 2.1 为什么需要⽅法重载
    • 2.2 方法重载的概念
    • 2.3 方法签名

【前言】

在Java编程的世界里,方法(Method)就像是一个个精巧的工具,帮助我们把复杂的任务分解成一个个可管理的小模块。对于刚接触Java的小白来说,掌握方法的使用是迈向编程高手之路的重要一步。本文将全面且深入地探讨Java方法的使用,带你从基础入门,逐步深入理解其精髓。

1.方法的概念及使用

1.1 什么是方法?

Java中的方法类似于C语言中的函数,方法是一组为了完成特定功能的代码块,它将一段逻辑封装起来,使其可以被重复调用。通过使用方法,我们可以提高代码的可维护性、可复用性和可读性。例如,计算两个整数之和这样一个简单的功能,如果没有方法,每次需要计算时都要重复编写加法的代码;而有了方法,我们只需编写一次加法逻辑,在需要的时候调用这个方法即可。

通俗易懂的理解方法:
比如说,我买了一个小米榨汁机(这里不是打广告哈),我想喝一杯鲜榨橙汁,那么我需要准备橙子(食材),然后就开始放入榨汁机中,开始一系列操作,最后得到一杯鲜榨橙汁.
这一整个过程就相当于Java中的方法,食材就是参数,一系列步骤就是代码,最后得到的橙汁就是返回值

1.2 方法的意义

  • 是能够模块化的组织代码(当代码规模⽐较复杂的时候).
  • 做到代码被重复使⽤, ⼀份代码可以在多个位置使⽤.
  • 让代码更好理解更简单.
  • 直接调⽤现有⽅法开发, 不必重复造轮⼦.

1.3 方法的定义

语法格式:

修饰符 返回值类型 ⽅法名称([参数类型 形参 ...]){⽅法体代码;[return 返回值];
}

so:

当我们每次想喝橙汁时,只需要调⽤这个“函数”,⽽不需要每次都重复所有步骤。这样不仅提⾼了效率,也让整个过程变得更加简单和有条理。

1.4 示例

1.实现一个函数,判断闰年

public class Method{
// ⽅法定义public static boolean isLeapYear(int year){if((0 == year % 4 && 0 != year % 100) || 0 == year % 400){return true;}else{return false;}}
}

2.实现⼀个两个整数相加的⽅法

public class Method{
// ⽅法的定义public static int add(int x, int y) {return x + y;}
}

【注意事项】:

  • 修饰符:现阶段直接使⽤public static 固定搭配
  • 返回值类型:如果⽅法有返回值,返回值类型必须要与返回的实体类型⼀致,如果没有返回值,必 须写成void
  • ⽅法名字:采⽤⼩驼峰第一个单词首字母小写,后面的首字母大写命名
  • 参数列表:如果⽅法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使 ⽤逗号隔开
  • ⽅法体:⽅法内部要执⾏的语句
  • 在Java当中,⽅法必须写在类当中
  • 在Java当中,⽅法不能嵌套定义
  • 在Java当中,没有⽅法声明⼀说
    在这里插入图片描述

1.5 方法的调用

方法需要被调用之后才能运行那怎么调用呢,接着往下看吧

用两个数相加来举例:

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

【注意】

  • 定义⽅法的时候, 不会执⾏⽅法的代码. 只有调⽤的时候才会执⾏.
  • 调⽤⽅法的时候,需要使⽤⽅法名+参数列表的形式进⾏调⽤
  • 如果⽅法有返回值,需要接收返回值结果

【练习】:计算 1! + 2! + 3! + 4! + 5!

博主在【Java】——程序逻辑控制(构建稳健代码的基石)中写过这个题,但使用函数调用之后就不用在套用,会变得更有条理,更容易让人看懂,下面是三种方法,大家可以体会体会

第一种:

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

第二种:

public class Test {public static void main(String[] args){int facSum = facSum(5);System.out.println(facSum);}public static int facSum(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;}
}

第三种

public class Test {public static int facSum(int n){int sum = 0;for (int i = 1; i <= n; i++) {sum += fac(i);}return sum;}public static int fac(int n){int ret = 1;for (int j = 1;j <= n;j++){ret *= j;}return ret;}public static void main(String[] args) {int facSum = facSum(5);System.out.println(facSum);}
}

执行结果:
在这里插入图片描述
【总结】

  • ⼀个⽅法可以被多次调⽤
  • 使⽤⽅法, 避免使⽤⼆重循环, 让代码更简单清晰.

1.6 实参和形参的关系

⽅法的形参相当于数学函数中的⾃变量,⽐如:1 + 2 + 3 + … + n的公式为sum(n) = ((1+n)*n) / 2
Java中⽅法的形参就相当于sum函数中的⾃变量n,⽤来接收sum函数在调⽤时传递的值的形参的
名字可以随意取,对⽅法都没有任何影响,形参只是⽅法在定义时需要借助的⼀个变量,⽤来保存⽅ 法在调⽤时传递过来的值。

public class TestMethod {public static void main(String[] args) {//调⽤⽅法int ret = getSum(10); // 10是实参,在⽅法调⽤时,形参N⽤来保存10System.out.println("ret = " + ret);}public static int getSum(int N) {// N是形参return (1+N)*N / 2;}
}

注意:

  • 在Java中,实参的值永远都是拷⻉到形参中,形参和实参本质是两个实体
  • 实参传值给形参,必须做到类型匹配,顺序匹配,个数匹配

【示例】:交换实参的值

public class Test {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);}public static void swap(int x,int y){int tmp = x;x = y;y = tmp;}
}

运行结果:
在这里插入图片描述
【解释】

实参a和b是main⽅法中的两个变量,其空间在main⽅法的栈(⼀块特殊的内存空间)中,⽽形参x和y
是swap⽅法中的两个变量,x和y的空间在swap⽅法运⾏时的栈中,因此实参a和b与形参x和y是两个没有任何关联性的变量,在swap⽅法调⽤时,只是将实参a和b中的值拷⻉了⼀份传递给了形参x和y,因此对形参x和y操作不会对实参a和b产⽣任何影响。

在Java当中是⽆法获取栈上的局部变量的地址的,如果要发⽣实参的交换,我们需要具备类和对象的知识

1.7 返回值

⽅法的返回值是⽤来接收⽅法运⾏之后,需要传递出去的值的。但是有的⽅法没有返回值,如果有返回值的情况下,我们需要注意返回值的数据类型需要匹配
在这里插入图片描述

返回值可以⽀持链式表达式:

public class Test {public static void main(String[] args){//调用方法int x = 1;int y = 2;int ret = add(1,2)+100;//链式表达式System.out.println(ret);}public static int add(int x,int y){//方法的定义return x + y;}
}

在这里插入图片描述

so:

  • 返回值在接收过程当中需要匹配
  • 没有返回值的情况下,⽅法的返回值类型为void
  • ⼀个⽅法是否有返回值需要视情况⽽定

2.方法重载

2.1 为什么需要⽅法重载

当既想计算两个整数相加,也想计算两个⼩数相加的时候,此时会出现参数类型不匹配的情况,如下:

public class Test {public static void main(String[] args) {int a = 10;int b = 20;int ret = add(a,b);System.out.println("ret = " + ret);double a2 = 10.5;double b2 = 20.5;double ret2 = add(a2,b2);System.out.println("ret2 = " + ret2);}public static int add(int x,int y){return x + y;}
}

在这里插入图片描述

下面是一个比较愚蠢的方法:
提供两个方法,分开计算虽然不会报错,但需要提供许多不同的方法名,就比较麻烦.不过重载就可以解决这个问题

public class Test {public static void main(String[] args) {int a = 10;int b = 20;int ret = add(a,b);System.out.println("ret = " + ret);double a2 = 10.5;double b2 = 20.5;double ret2 = addDouble(a2,b2);System.out.println("ret2 = " + ret2);}public static int add(int x,int y){return x + y;}public static double addDouble(double x,double y){return x + y;}
}

2.2 方法重载的概念

中华文化博大精深,很多词语都有不一样的含义,那这就说明该词语被重载了,在Java中,如果多个⽅法的名字相同,参数列表不同,则称该⼏种⽅法被重载了。

public class Test {public static void main(String[] args) {add(1,2);    //调⽤add(int, int)add(1.1,2.2);//调⽤add(double, double)add(1.5, 2.5, 3.5);// 调⽤add(double, double, double)}public static int add(int x,int y){return x + y;}public static double add(double x,double y){return x + y;}public static double add(double x,double y,double z){return x + y +z;}
}

注意:

  • ⽅法名必须相同
  • 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  • 与返回值类型是否相同⽆关
  • 编译器在编译代码时,会对实参类型进⾏推演,根据推演的结果来确定调⽤哪个⽅法
  • 两个⽅法如果仅仅只是因为返回值类型不同,是不能构成重载的

2.3 方法签名

⽅法签名:经过编译器编译修改过之后⽅法最终的名字。
具体⽅式:⽅法全路径名+参数列表,构成⽅法完整的名字
方法签名手册
【总结】

Java方法是Java编程中非常重要的概念,通过合理地定义和使用方法,可以使代码更加模块化、易于维护和复用。本文介绍了Java方法的定义、调用、参数、返回值、重载、等方面的知识。希望通过这些内容,能帮助Java小白们深入理解和掌握Java方法的使用,为后续的Java学习和编程实践打下坚实的基础。在实际编程中,多练习、多思考,不断积累经验,才能更加熟练地运用方法来解决各种复杂的问题。

在这里插入图片描述

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

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

相关文章

STM32HAL库,解决串口UART中断接收到的第一个字节数据丢失

1.问题描述&#xff1a; 只有上电后第一次接收到的第一字节数据会丢失&#xff0c;往后再接收也不会存在问题了。 2.先贴出来重写UART中断回调函数 我在接收到第一字节数据后开启定时器中断的&#xff0c;做一个超时处理&#xff0c;每次接收到数据会对定时器计数值清零&…

Linux中安装redis

Redis的安装包&#xff0c;从官方下载下来的是c语言的源码包&#xff0c;我们需要自己编译安装。具体操作步骤如下&#xff1a; 安装redis 上传redis资源包 安装C语言的编译环境 gcc yum install -y gcc-c 解压redis源码在当前目录 tar -zxvf redis-6.2.4.tar.gz 进入解压目录…

基于 SSE 和 WebSocket 的在线文本实时传输工具

简介 在线文本实时传输工具支持 SSE&#xff08;Server-Sent Events&#xff09; 和 WebSocket&#xff0c;可在不同设备间快速共享和同步文本&#xff0c;适用于跨设备协作、远程办公和即时通讯。 核心功能 实时同步&#xff1a;文本输入后&#xff0c;另一端用户可立即看到…

【UE5 PuerTS笔记】PuerTS安装

目录 1.下载PuerTS2.下载V83.创建C项目4.拷贝puerts/unreal下的Puerts目录到您项目的Plugins目录下5.解压V8到YouProject/Plugins/Puerts/ThirdParty6.在JsEnv.build.cs中修改UseV8Version设置为你所下载的版本。7.修改CSharpParamDefaultValueMetas.cs文件增加宏定义8.取消引擎…

Baklib企业CMS元数据与协作管理优化

智能元数据驱动协作流程升级 在现代企业内容管理中&#xff0c;智能元数据系统已成为提升协作效率的核心引擎。通过自动化标签分类与语义分析技术&#xff0c;Baklib实现了文档属性的动态结构化映射&#xff0c;使跨部门协作中的信息检索效率提升超40%。其可视化流程编辑器支持…

从零开始实现 C++ TinyWebServer Buffer类详解

文章目录 为什么需要Buffer缓冲区&#xff1f;Buffer 设计Buffer 成员变量实现 ReadFD() 函数实现 WriteFD() 函数实现 MakeSpace() 函数Buffer 代码Buffer 测试 在网络编程中&#xff0c;Buffer&#xff08;缓冲区&#xff09;是一个非常重要的概念&#xff0c;它可以帮助我们…

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…

《线程池:Linux平台编译线程池动态库发生的死锁问题》

关于如何编译动态库可以移步《Linux&#xff1a;动态库动态链接与静态库静态链接》-CSDN博客 我们写的线程池代码是闭源的&#xff0c;未来想提供给别人使用&#xff0c;只需要提供so库和头文件即可。 系统默认库文件路径为&#xff1a; usr/lib usr/loacl/lib 系统默认头文件…

Vmware中的centos7连接上网

有很多刚刚开始配置了centos7&#xff0c;然后发现不能上网现在来解决这个问题。 测试能不能上网 先还原这个设置&#xff0c;如果没有动过的话就不用&#xff0c;连接模式是NAT模式 然后进去设置网络环境&#xff0c;记得是用超级用户设置 vi /etc/sysconfig/network-script…

Nvidia 官方CUDA课程学习笔记

之前心血来潮学习了一下Nvidia CUDA&#xff0c;外行&#xff0c;文章有理解不当的地方&#xff0c;望指正。 主要根据以下Nvidia官方课程学习&#xff1a; https://www.bilibili.com/video/BV1JJ4m1P7xW/?spm_id_from333.337.search-card.all.click&vd_sourcec256dbf86b…

Harmony 配置环境,创建,运行项目

Harmony 配置环境&#xff0c;创建&#xff0c;运行项目 1 .安装IDE 鸿蒙应用开发需要使用配套的IDE——HUAWEI DevEco Studio 获取DevEco Studio安装包&#xff0c;官方下载地址为&#xff1a;https://developer.huawei.com/consumer/cn/deveco-studio/ 解压之后双击deveco-s…

基于java的ssm+JSP+MYSQL的九宫格日志网站(含LW+PPT+源码+系统演示视频+安装说明)

系统功能 管理员功能模块&#xff1a; 个人中心 用户管理 日记信息管理 美食信息管理 景点信息管理 新闻推荐管理 日志展示管理 论坛管理 我的收藏管理 管理员管理 留言板管理 系统管理 用户功能模块&#xff1a; 个人中心 日记信息管理 美食信息管理 景点信息…

R语言软件配置(自用)

①输入R: The R Project for Statistical Computing ②点击进入Cran镜像网页&#xff0c;选择清华大学镜像&#xff0c;选择自己合适的版本下载即可(以我电脑windows为例)。 ③点击base或者install R for the first time&#xff0c;然后选择Download R-4.4.3 for windows&…

【数据结构】数据结构,算法 概念

0.本篇问题&#xff1a; 数据、数据元素、数据对象、数据项之间的基本关系&#xff1f;ADT是什么&#xff1f;数据结构的三要素&#xff1f;数据的逻辑结构有哪些&#xff1f;数据的存储结构有哪些&#xff1f;算法的五个特征&#xff1f;O(1) O(logn) O(n^n) O(n) O(n^2…

Doris单价和集群的部署

1 服务器环境准备 我们这里以3台服务器为列 1.1 硬件配置 Centos7.1及以上Ubuntu16.04及以上java1.8及以上GCC4.8.2及以上 每台服务器磁盘大小最小50G及时间相差不超或5秒 1.2 环境配置 1.2.1 修改limits.conf文件 vim /etc/security/limit.conf #在文件最后添加,*号也要添…

Linux上的`i2c-tools`工具集的编译构建和安装

源码复制到Ubuntu系统中并解压 的i2c-tools工具集的源码百度网盘下载链接&#xff1a; https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwdi6xe 终端进入源码目录 cd /home/book/mybuild/i2c-tools-4.2执行编译构建命令 运行下面的命令进行编译构建 make CC${CROSS_COM…

织梦DedeCMS优化文章模版里的“顶一下”与“踩一下”样式

测试的版本5.7.1UTF-8 一、插入<head>Js代码 将下面代码插入到文章模版里的<head>标签里 <script language"javascript" type"text/javascript" src"{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script> <…

基于javaweb的SpringBoot食品溯源系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

数据采集技术之python网络爬虫(中国天气网的爬取)

一、爬取中国天气网所有地区当天的天气数据&#xff08;PyCharm&#xff09;&#xff1a; 网址&#xff1a;https://www.weather.com.cn/ 下面爬取数据&#xff1a; 因为现在已经到了夜间&#xff0c;所以白天的数据已经不见了&#xff0c;但原理是一样的。 二、代码以及详情…

实验四 文件管理

实验四 文件管理 实验目的 &#xff08;一&#xff09;实验1 1&#xff0e;加深对文件&#xff0c;目录&#xff0c;文件系统等概念的理解。 2&#xff0e;掌握Linux文件系统的目录结构。 3&#xff0e;掌握有关Linux文件系统操作的常用命令。 4&#xff0e;了解有关文件…