微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java--方法

1.程序设计思想:引入标志位

2.方法函数):代码复用。某些代码块会被多处代码重复使用,这些代码就应该抽象成方法,被需要使用的地方调用,这样就可以减少很多重复代码的定义。

(1)语法:

public static 返回值 方法名称(参数类型  参数名称... 多个参数(0~n)){

//方法代码

return  方法的返回值  //若方法无返回值,return语句可以忽略不屑,若有返回值,return语句必须要写

}

eg:定义一个方法判断一个年份是否时闰年-->执行方法后需要告诉是或者不是

public  static boolean  isPrime ( int  year){   }

PS:方法的返回值以及返回值的类型、有无参数以及参数的类型要取决于该方法的作用。

PS:方法命名采用小驼峰命名法,一般来说,返回值为boolean类型的方法采用is开头,一次表达是或否。

(2)方法调用

调用方法-->传递参数-->执行具体的方法体-->方法执行结束(遇到return 语句或所有方法代码执行结束)-->回到调用出继续执行

eg:两个整数相加方法调用

 PS:程序的入口就是从主方法main开始向下执行。

(3)Java方法中的参数传递--->只有值传递

形参:形式参数,方法定义时,还不知道具体参数值,只知道当前方法定义时参数的类型。eg:

实参:具体调用某个方法时,向方法传递的参数称为实参,此时就有了具体的值传递给方法。eg:

 PS:在Java中,无论形参和实参的类型是什么,实参的值永远都是拷贝一份赋值给形参。形参和实参本质上是两个不同的实体,两者彼此不影响。

PS:若某些方法没有返回值,在定义方法时使用voic关键字表示该方法没有返回值(不能忽略),仍然可以在没有返回值的方法中使用 return ,表示结束当前方法的使用。eg:

 (4)方法重载(overload):在同一个类中,定义了若干个方法名称相同,参数列表不同(参数类型或个数不同),与返回值无关的一组方法,这样的一组方法称为重载方法

重载方法的引出:定义多个不同名称方法时,每当传入不同的参数时,就得调用不同的名称-->用户的使用成本太高,需要记很多的方法名称

使用重载方法 --> 方法名称相同,参数列表不同(重载方法一定与方法的返回值无关)。

 eg:JDK中每天都在用System.out.println(传递任何参数都可以进行打印) --> 定义了n个重载方法

(5)方法签名

6)方法递归:一种程序设计的结构。一个方法不断调用自身,这种方法就称之为方法递归。

1》使用场景(缺一不可):

原问题可以拆分为多个子问题的解;

拆分后的子问题和原问题除了数据规模、大小不同外,解决的思路完全相同;

存在递归的终止条件(拆分子问题的过程时有限的,不可能一直这么拆分下去)。

2》如何写出正确的递归函数

抓语义(这个函数的作用):再写递归函数时,一定要抓住传递递归函数的语义(这个函数写出来到底在解决什么问题);

写当前(当前函数内部已知条件是什么,只能解决什么问题):在具体编程时,就假设这个函数就已经实现好了,只需要利用这个函数帮助解决问题即可;

找终止(拆分的最后一个子问题是什么):把我递归函数的终止条件。

eg:一个递归函数(自身调用自身),实现整数n的阶乘:

 3》

近距离观察递归函数--->一步步看递归函数内部的运行逻辑--->递归函数就是函数的一步步调用

 递:不断地调用递归函数本身,将问题不断拆分

归:不断拆分的过程中,碰到子问题的边界,就开始从边界条件处开始依次返回。

写递归函数的思路和递归函数展开的过程的关系:

写的思路:从顶向下再思考问题

展开的过程:从下向上依次返回

4》斐波那契数

--》递归求解--》自上向下求解问题(自顶向下、宏观思考)

 

 PS:类似斐波那契数这种递归函数,写起来容易些,但是执行效率会比较低(与循环相比)。递归求解fibo(n),很多fibo数会被重复进行计算。

--》非递归求解--》自下向上求解问题

 5》汉诺塔问题

开始时所有的盘子都是从小到大放在A塔上的,选择需要将A塔上的所有盘子移动到C塔上,移动时,只能小盘子放在大盘子上,不能改变其顺序。

 

原文地址:https://www.jb51.cc/wenti/3279291.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐