Java--方法的使用

1.1什么是方法

方法顾名思义就是解决问题的办法,在程序员写代码的时候,会遇到很多逻辑结构一样,解决相同问题时,每次都写一样的代码,这会使代码看起来比较绒余,代码量也比较多,为了解决这个问题,我们把代码逻辑相同的代码写成一个方法,当我们解决相同问题时,直接调用这个方法,这会使代码看起来简洁明了。

方法:在Java中就是一个代码片段,与C语言中的函数类似

方法存在的意义:

1. 是能够模块化的组织代码(当代码规模比较复杂的时候 ).

2. 做到代码被重复使用, 一份代码可以在多个位置使用.

3. 让代码更好理解更简单.

4. 直接调用现有方法开发, 不必重复造轮子.

举个列子:当我们需要求一个数的阶乘时

    public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int x= scanner.nextInt();for (int i = x-1; i >=1 ; i--) {x*=i;}System.out.println(x);}

你可能会写出这样的代码,是不是看见循环就烦,当我们学会方法就会写出下面这种简洁的代码

   public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int x= scanner.nextInt();System.out.println(fac1(x));}

是不是看着简洁多了

2.方法的基本格式

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

接下来来个实例:

public static int fac1(int x){for (int i = x-1; i >=1 ; i--) {x*=i;}return x;
}
——————————————————————————————————————————————————public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int x= scanner.nextInt();System.out.println(fac1(x));}

横线上面是方法的定义,下面是方法的调用;

注意事项 :

1. 方法定义时, 参数可以没有. 每个参数要指定类型

2. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void

3. 方法定义时的参数称为 "形参", 方法调用时的参数称为 "实参".

4. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.

5. Java 中没有 "函数声明" 这样的概念.

3.方法的执行过程

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

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

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

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

5.一个方法可以被多次调用.

4.实参和形参

在定义方法时,参数类型(形参)可以有多个或者一个也没有

在调用方法时传递的参数叫做实参,参数要与方法的形参匹配(参数的个数和类型)

形参是实参的一份临时拷贝,即调用方法时创建,方法结束后销毁

举个例子:交换两个数

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

这样写结果是不是交换了呢?肯定不是

主要原因还是因为形参只是实参的一份临时拷贝

那就没办法交换两个数了呗,交换两个数要传引用数据类型

比如数组就是引用数据类型

    public static void swap1(int arr[]){int x=arr[0];arr[0]=arr[1];arr[1]=x;}public static void main(String[] args) {int []arr={1,2};System.out.println("交换前arr[0]="+arr[0]+" arr[1]="+arr[1]);swap1(arr);System.out.println("交换后arr[0]="+arr[0]+" arr[1]="+arr[1]);}

5.没有返回值的方法

没有返回值的方法即方法的返回值类型void

例如:

   public static void print(){System.out.println("hhhhhh");}public static void main(String[] args) {print();}

同时,刚才的交换两个数也是没有返回值的方法

如果想要在某个条件下提前结束方法,也可以在满足条件后直接return

6.方法的重载

当我们想要一个函数的功能,实现多种参数时,我们就可以使用方法的重载

例子:

我们使用add方法时,即想实现两个整形的相加,又想实现两个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 void main(String[] args) {System.out.println(add(1,2));System.out.println(add(1.2,2.2));}

方法名都是add,方法名相同,但是实现的功能不同,就叫做方法的重载

重载的规则:

1.针对同一个类

2.方法名相同

3.方法的参数不同(参数个数或者参数类型)

4.方法的返回值类型不影响重载.

7.方法的递归

什么是递归:

一个方法在执行过程中调用自身, 就称为 "递归"

经典例子:斐波那契数列

public static int fib1(int x){if(x==1||x==2){return 1;}else{return fib1(x-1)+fib1(x-2);}
}

求斐波那契数列的第几个数时,这个数是前两个斐波那契数之和,而第一个和第二个斐波那契数是1,再求第x个斐波那契数时,需要先求前两个斐波那契数,当x为1或2时,返回1

红色箭头代表递的过程,蓝色箭头代表归的过程

小结:

1.递归是一种重要的编程解决问题的方式.

2.有些问题天然就是使用递归方式定义的(例如斐波那契数列, 二叉树等), 此时使用递归来解就很容易.

3.有些问题使用递归和使用非递归(循环)都可以解决. 那么此时更推荐使用循环, 相比于递归, 非递归程序更加高效

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

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

相关文章

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层:中继器,集线器(多路中继器) 数据链路层:网桥,交换机(多端口…

软件系统概要设计说明书(实际项目案例整理模板套用)

系统概要设计说明书 1.整体架构 2.功能架构 3.技术架构 4.运行环境设计 5.设计目标 6.接口设计 7.性能设计 8.运行设计 9.出错设计 全文档获取进主页 软件资料清单列表部分文档(全套可获取): 工作安排任务书,可行性分析报告&…

ChatGPT4 Turbo 如何升级体验?官网如何使用最新版GPT-4 Turbo?

本文会教大家如何教大家升级自己的GPT4到GPT4 Turbo,同时检验自己的GPT4 Turbo是否是最新版本的GPT-4-Turbo-2024-04-09 说明 新版GPT-4 Turbo再次重夺大模型排行榜王座,超越了Claude 3 Opus。 最新版本的GPT-4 Turbo被命名为GPT-4-Turbo-2024-04-09。…

深度学习之基于Vgg16卷积神经网络书法字体风格识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 书法是中国传统文化的重要组成部分,具有深厚的历史底蕴和独特的艺术魅力。在数字化时代&…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

root用户不能够sudo切换到普通用户解决办法

sudo命令可以让你以root身份执行命令,来完成一些我们这个账号完成不了的任务。但是并非所有用户都能够执行sudo,因为有权限的用户都在/etc/sudoers中。 解决方法如下: 1、进入root模式,su,再输入正确密码 &#…

stm32单片机开发六、SPI通信协议

上一节看到了,I2C使用上拉电阻,导致了整个电路从低到高电平的时候出现了延时爬升,就会导致I2C的频率不高,一般在100K,告诉400K 但是SPI的速率可以达到很高,这就是SPI的优势 SS,从机选择线&#…

这些CTF,不仅学技术,还有巨额奖金!

前言: 不会吧,不会吧,不会还有安全er不知道CTF是什么吧? 在程序员的世界里,也有ACM这样的编程大赛,成为各路编程高手一较高下展示能力的平台。 那在网络安全的圈子里,各路黑客红客白帽子们又…

H3C Private VLAN实验

Private VLAN 实验1 实验需求 按照图示配置 IP 地址 在 SW1 上配置 Private VLAN,Primary VLAN 为 Vlan30,Secondary VLAN 为 Vlan10 和 Vlan20 SW2 通过 Vlan100 下行连接 SW1,要求 PC3 和 PC4 都能以 Vlan100 访问 PC5 在 SW1 上配置 …

day-30 三角形最小路径和

思路 典型的动态规划问题,状态方程可以理解为min[i][j]min[i][j]Math.min(min[i-1][j-1],min[i-1][j])&#xff0c;在考虑边界的特殊处理即可 解题方法 最后得到的最后一行中的最小值即为最小路径和 Code class Solution {public int minimumTotal(List<List<Integer&…

PCB仿真:如何模拟PCB设计

当有人在学习如何驾驶汽车时,驾校老师会在模拟器上对他们进行培训,然后教他们如何在路上驾驶真正的汽车。在制造或使用产品或机器之前了解或测试其行为总是很好的。这样可以知道产品的外观和行为,如果它没有按照期望工作,总是可以做出改变。当不当操作的成本很高时,实际控…

迅雷永久破解

链接&#xff1a;https://pan.baidu.com/s/1ZGb1ljTPPG3NFsI8ghhWbA?pwdok7s 下载后解压 以管理员身份运行绿化.bat&#xff0c;会自动生成快捷方式&#xff0c;如果没有可以在program中运行Thunder.exe

QT5之事件——包含提升控件

事件概述 信号就是事件的一种&#xff0c;事件由用户触发&#xff1b; 鼠标点击窗口&#xff0c;也可以检测到事件&#xff1b;产生事件后&#xff0c;传给事件处理&#xff0c;判断事件类型&#xff0c;后执行事件相应函数&#xff1b; 类似单片机的中断&#xff08;中断向量…

Dask简介

目录 一、概述 二、编程模型 2.1 High-Level Collection 2.2 Low level Interface 三、调度框架 3.1 任务图 3.2 调度 3.3 优化 3.4 动态任务图 一、概述 Dask是一个灵活的Python并行计算库。 Dask由两部分组成&#xff1a; 为计算优化的动态任务调度&#xff1a;和A…

翻译《The Old New Thing》 - What is the deal with the ES_OEMCONVERT flag?

What is the deal with the ES_OEMCONVERT flag? - The Old New Thinghttps://devblogs.microsoft.com/oldnewthing/20050719-12/?p34893 Raymond Chen 在 2005年07月19日 ES_OEMCONVERT 标志是怎么回事&#xff1f; 简要 文章讨论了 ES_OEMCONVERT 编辑控件风格的起源和用途…

linux学习:线程池

目录 原理 初始线程池 运行中的线程池 相关结构体 api 线程池初始化 投送任务 增加活跃线程 删除活跃线程 销毁线程池 例子 thread_pool.h thread_pool.c test.c 测试程序 原理 一个进程中的线程就好比是一家公司里的员工&#xff0c;员工的数目应该根据公司的…

数据库数据恢复—SQL Server数据库ndf文件变为0KB的数据恢复案例

SQL Server数据库故障&#xff1a; 存储设备损坏导致存储中SQL Server数据库崩溃。对数据库文件进行恢复后&#xff0c;用户发现有4个ndf文件的大小变为0KB。该SQL Server数据库每10天生成一个大小相同的NDF文件&#xff0c;该SQL Server数据库包含两个LDF文件。 SQL Server数据…

优思学院|HR部门如何制定公司的精益六西格玛培训计划?

在许多企业中&#xff0c;精益六西格玛作为一种提升效率和质量的重要方法论&#xff0c;越来越受到重视。HR部门在推广和实施精益六西格玛培训计划中其实也扮演着关键角色。以下是HR部门可以采取的几个步骤&#xff0c;以有效地制定和实施这样的培训计划。 1. 需求分析 首先&…

Mybatis进阶3--注解开发

先看&#xff1a; Mybatis进阶1-CSDN博客 Mybatis进阶2-CSDN博客 mybatis注解开发 前置&#xff1a;不需要xxxMapper..xml文件&#xff08;映射文件&#xff09; 在核心配置文件中&#xff1a;<mappers>标签只能使用&#xff1a;<package name"扫描的包&quo…

25考研英语长难句Day01

Day01 【思考】&#xff1a;本句中有几处平行结构&#xff1f;分别是什么和什么平行并列呢&#xff1f;【生词、词组】【断开、简化】&#xff08; 两步分析法&#xff09;断开长难句的三步法&#xff1a;标点、连接词、分析主谓平行结构 【思考】&#xff1a;本句中有几处平行…