Java篇方法的使用

Java篇方法的使用

目录

前言

一. 方法概念及使用

1.1 什么是方法

1.2 方法的定义

 1.3 形参与实参的关系

二. 方法重载

 2.1 方法签名

 三. 递归

3.1 递归的概念

3.2 递归的思想

3.3 递归的限制条件

3.4 递归举例练习

结语


前言

相信大家在学校都是校草级别的人物,每天总是有很多小姐姐来要你们的微信,导致每次都要重复被要微信的过程,那么有什么方法能够解决这个重复的过程呢?于是你将你的微信号和帅帅的照片挂到了学校的校园墙中,让小姐姐自行添加你的微信,从而解决了被要微信这个重复的过程,那么在我们的Java编程中也是需要定义方法来解决重复的问题,接下来我们来学习一下方法的使用吧~

一. 方法概念及使用

在编程中,假设有某段功能的代码可能频繁使用到,并且在每个位置都重新实现一遍,这会使代码变得繁琐、开发效率低下、程序不利于维护等缺点,所以我们将频繁使用的代码封装成方法,需要使用时调用该方法即可。

1.1 什么是方法

方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义:

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

 例如我们要写一个方法来判断素数:

 public static void func(int a) { boolean flag = true; for(int i=2; i<=a-1; i++){ if(a%i == 0){ System.out.println(a+"不是素数"); return; } } System.out.println(a+"是素数"); }

当我们在main方法中需要判断一个数是否是素数时,则直接调用func( )方法即可,无需再重新编写代码。

1.2 方法的定义

方法定义的语法:

修饰符 返回值类型 方法名称([ 参数类型 形参 ]){ 方法体代码; return 返回值; } 例如上述的func( )方法: public static void func(int a) 修饰符 返回类型 方法名称(参数类型 形参)

方法定义的几个注意事项:

1. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void2. 方法名字:采用小驼峰命名3. 在java当中,方法必须写在类当中4. 方法不能嵌套定义5.  参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开

 1.3 形参与实参的关系

形参是实参的一份临时拷贝,形参拥有独立的内存空间,对形参的改变不会影响实参,什么意思呢?我们来看一段代码:

可以看到我们明明在swap( )方法中交换了a和b的值,但是运行结果却还是没有变化,我们画图演示一下形参与实参在内存中的存储:

从图中可以看到,在调用swap( )方法的时候,会重新开辟一块内存空间来接收实参的值,此时的形参是独立的空间与实参没有任何关系,所以对形参的更改不会影响实参~

二. 方法重载

什么是方法重载呢?我们看个例子:

从上面的代码中我们就可以看到,当我们想要完成不同类型的变量进行相加时,我们就需要写出两个不同的方法,那么要是有多个不同类型的变量呢?此时提供方法的时候,我们时常因为给方法取名而头疼,那么这个时候就可以使用方法重载来解决这个问题

 方法重载的注意事项:

1. 方法名必须相同2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)3. 返回值没有要求

 2.1 方法签名

 大家有没有想过在同一个作用域中不能定义两个相同名称的标识符。比如:在方法中不能定义两个名字一样的变量,但是为什么类中就可以定义方法名相同的方法呢?

方法签名:方法签名定义了调用方法之前需要知道的一切信息,经过编译器编译修改过之后方法最终的名字

具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。

 三. 递归

3.1 递归的概念

说到递归相信初学编程的小伙伴真是越发的头疼,递归其实就是方法自己调用自己,“ 递 ”其实就是递推,“ 归 ”即是回归,递归是一种大事化小的解决问题的方法。

3.2 递归的思想

将一个大型复杂的问题层层转化成一个与原问题相似,但是规模更小的子问题来求解,直到子问题不能被拆分,那么递归就结束了,接下来我们一起来看一段代码:

在上面的代码中我们通过main方法调用print( )方法,之后print( )方法一直自己调用自己,程序陷入了死循环,并且造成了栈溢出的异常,所以在使用递归的时候,需要加一个限制条件。

3.3 递归的限制条件

当我们在书写递归程序的时候,必须要有两个必要条件:

1. 递归必须存在限制条件,当满足这个条件时,程序便不在进行递推而是开始回归



2.每次递归调用之后越来越接近这个限制条件

 那么拥有以上两个条件之后,就可以避免程序出现死循环的现象了~

3.4 递归举例练习

经典练习:求n的阶乘

n的阶乘就是1~n的数字进行累积相乘

 那么我们来分析一下这个题目该怎么完成:

//5的阶乘 5!=5 * 4 * 3 * 2 * 1 //4的阶乘 4!=4 * 3 * 2 * 1 以此类推... 那么我们是不是可以将5的阶乘看成: 5的阶乘=5 * 4的阶乘 5!=5 * 4!(4的阶乘) 而4的阶乘看成 4的阶乘=4 * 3的阶乘 4!=4 * 3!(3的阶乘) 以此类推...

通过上面的分析我们就可以得出阶乘公式:n!=n*(n-1)!,当n等于0时,n!就等于1,此时将这两个运算公式转换成数学中的分段函数,即:

 这个分段函数其实就是N的阶乘的递归公式啦,那么接下来以代码的方式呈现:

public class Test10 { public static int Fact(int n) { if(n == 0){ return 1; } return n*Fact(n-1); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(Fact(n)); } } 

递归执行过程图:

 那么通过递归的方式,这道经典的例题就完成了。

注意:递归是一种很好的解决问题的方法,但是和很多技巧一样容易被误用,我们应当合理选择正确的方式解决问题,当冗余计算过多时,往往选择迭代的方式解决问题更为合适,也不容易出现栈溢出的现象。

结语

以上就是本期的全部内容啦,希望大家看完后能够合理运用方法,并且使用合适的方式解决问题,在此感谢大家的观看!!!

Read more

“现在的AI就像1880年的笨重工厂!”微软CSO斯坦福泼冷水:别急着造神

“现在的AI就像1880年的笨重工厂!”微软CSO斯坦福泼冷水:别急着造神

大模型仍未对上商业的齿轮? 编译 | 王启隆 来源 | youtu.be/aWqfH0aSGKI 出品丨AI 科技大本营(ID:rgznai100) 现在的硅谷,空气里都飘着一股“再不上车就晚了”的焦躁感。 最近 OpenClaw 风头正旺,强势登顶 GitHub,终结了 React 神话,许多人更是觉得“AI 自己干活赚钱”的日子就在明天了。 特别是在斯坦福商学院(GSB)这种地方,台下坐着的都是成天琢磨怎么用下一个技术风口搞个独角兽出来的狠人。 微软的首席科学官(CSO)Eric Horvitz 被请到了这个几乎全美最想用 AI 变现的礼堂里。作为从上世纪 80 年代就开始搞 AI 的绝对老炮、也是微软技术底座的“扫地僧”,这位老哥并没有顺着台下的胃口,去吹捧下个月大模型又要颠覆什么行业,而是兜头给大家浇了一盆带点学术味的冷水。 他讲了一个挺有画面感的比喻:大家都在聊

By Ne0inhk
Godot被AI代码“围攻”!维护者崩溃发声:“不知道还能坚持多久”

Godot被AI代码“围攻”!维护者崩溃发声:“不知道还能坚持多久”

整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 当大模型能在几秒钟内生成一段“看起来像那么回事”的补丁时,开源社区却开始付出另一种代价。 最近,开源游戏引擎 Godot 的核心维护团队公开吐槽:他们正被大量“AI 生成的低质量代码”淹没。那些代码往往结构完整、注释齐全、描述洋洋洒洒,但真正的问题是——提交者可能并不理解自己交上来的内容。 这件事,并不是简单的“有人偷懒用 AI 写代码”。它正在触及开源协作最核心的东西:信任。 一场悄无声息的“AI 洪水” 事情的导火索来自一条 Bluesky 讨论帖。 Godot 主要维护者之一、同时也是 Godot 商业支持公司 W4 Games 联合创始人的 Rémi Verschelde 表示,所谓的“AI slop”

By Ne0inhk
诺奖得主辛顿最新访谈:1 万个 AI 可以瞬间共享同一份“灵魂”,这就是为什么人类注定被超越

诺奖得主辛顿最新访谈:1 万个 AI 可以瞬间共享同一份“灵魂”,这就是为什么人类注定被超越

当宇宙级的“嘴炮”遇到降维打击。 编译 | 王启隆 来源 | youtu.be/l6ZcFa8pybE 出品丨AI 科技大本营(ID:rgznai100) 打开最新一期知名播客 StarTalk 的 YouTube 评论区,最高赞的一条留言是这样写的: “我长这么大,第一次看到尼尔·德葛司·泰森(Neil deGrasse Tyson)在一档节目里几乎全程闭嘴,像个手足无措的小学生一样乖乖听讲。” 作为全美最知名的天体物理学家,泰森平时的画风是充满激情、喋喋不休、用宇宙的宏大来震撼嘉宾。但这一次,坐在他对面的那位满头银发、带着温和英音的英国老人,仅仅用最平淡的语气,就让整个演播室陷入了数次令人窒息的沉默。 这位老人是 Geoffrey Hinton。深度学习三巨头之一,2024 年诺贝尔物理学奖得主,被公认为“AI 教父”。 对经常阅读 Hinton 演讲的我来说,这也是比较新奇的一幕—

By Ne0inhk
48小时“烧光”56万!三人创业团队濒临破产,仅因Gemini API密钥被盗:“AI账单远超我们的银行余额”

48小时“烧光”56万!三人创业团队濒临破产,仅因Gemini API密钥被盗:“AI账单远超我们的银行余额”

整理 | 苏宓 出品 | ZEEKLOG(ID:ZEEKLOGnews) 「仅过了 48 小时,一笔 8.2 万美元的天价费用凭空出现,较这家小型初创公司的正常月费暴涨近 46000%。」 这不是假设的虚幻故事,而是一家墨西哥初创公司正在经历的真实危机。 近日,一位名为 RatonVaquero 的开发者在 Reddit 发帖求助称,由于他的 Gemini API 密钥被盗用,原本每月仅约 180 美元(约 1242 元)的费用,在短短 48 小时内暴涨到 82,314.44 美元(约 56.8 万元)。对于这家只有三名开发者的小型创业团队来说,这笔突如其来的账单,几乎等同于灭顶之灾。 “我现在整个人都处在震惊和恐慌之中。”RatonVaquero

By Ne0inhk