Java讲解方法.ppt

上传人:豆**** 文档编号:24548431 上传时间:2022-07-05 格式:PPT 页数:35 大小:688KB
返回 下载 相关 举报
Java讲解方法.ppt_第1页
第1页 / 共35页
Java讲解方法.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《Java讲解方法.ppt》由会员分享,可在线阅读,更多相关《Java讲解方法.ppt(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、本章要点 对方法的理解 方法的声明 方法的调用 参数的传递 方法的重载 递归与迭代方法概述 通过前面章节的程序结构我们可以看到,对简单的问题,程序比较简单,一个程序是一个类,在类中包含一个main()方法。但解决一些比较复杂的问题时,按照现代模块化程序设计的思想,应仔细分析问题,善于将这些复杂问题分解成若干个相对简单的问题,即划分成多个模块。这样,解决一个复杂问题就转化为一些简单的问题。方法概述 JAVA中有两种模块:方法和类。借助Java API和其他各种类库中可用的、“预先打好包”的方法和类,我们可以编写出新的方法和类。 在程序设计时,可以将一个程序中完成特定功能的程序定义成方法(有时在其

2、他编程语言中称为函数或过程)。在需要使用这些功能时,可调用相应的方法,特别是在某些功能多次被使用时,采用方法可大大地提高程序代码的可重用性。方法概述 “方法”的目的:一是“分而治之”;二是软件的重用;三是避免在程序中重复代码。 常用的Math类的方法和String类的方法方法的声明 使用打印三个矩形的实例说明方法的声明 方法声明的一般格式为:修饰符1 修饰符2 .返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.) 程序代码 return 返回值 补充:声明方法时使用的参数称为形式参数(形参),调用方法时使用的参数称为实际参数(实参)。方法头方法体方法的声明 声明方法应注意:在

3、类体的“ ”外定义方法,是语法错误方法名可以是任何合法的标识符返回值类型可以是任何基本数据类型、String和void(表示方法不返回值),方法至多可以返回一个值,且返回值类型是不可省略的如果指定的返回值类型不是void,则方法中必须包含一条return语句,返回指定类型的值,同样在返回值类型为void的方法中返回一个值也是一种语法错误方法的声明 声明方法应注意(接上页)方法头“()”中的形参用逗号分隔,且用add(int a,b)代替add(int a,int b)是一种错误方法头“()”的右端不能放置“;”在方法体中将形式参数重新声明是一种语法错误方法的声明 方法按是否有参数可分为有参方法

4、和无参方法: 例 定义计算平方的方法(有参方法) static int square(int x) int s; s=x*x; return (s); 方法的声明 例 求最大值的方法 int max3(int x,int y,int z) int big; if(xy) big=x; else big=y; if(bigmax) max=x; else max=y; return max; 方法的声明对象方法是没有static修饰符修饰的方法,必须生成对象实例才能够使用该方法。如:class Car int speed; /变量定义部分。 float weight,height; /变量定义部

5、分。 void changSpeed(int newSpeed) /对象方法定义。 speed=newSpeed; float getWeight() /对象方法定义。 return weight; float getHeight() /对象方法定义。 return height; 方法的调用1、类方法调用 类方法可以直接调用或通过类名.方法名(实参)调用,不需生成对象。 对于有返回值的类方法作为表达式或表达式的一部分来调用,其在表达式中出现的形式为:方法名(实际参数表)方法的调用例 调用类方法public class SquareC static int square(int x) /类方法

6、 int s; s=x*x; return (s); public static void main(String args) int n = 5; int result; result= square(n);/类方法调用 System.out.println(result); 方法的调用对于没有返回值的类方法,以独立语句的方式调用方法。例:class AreaCclass AreaC static void area(int a , int b ) static void area(int a , int b ) int s; int s; s = a s = a * * b; b; Sys

7、tem.out.println(s); System.out.println(s); public static void main(String args) public static void main(String args) int x = 5; int x = 5; int y=3; int y=3; area(x, y); / area(x, y); /方法语句,直接调用类方法方法语句,直接调用类方法 方法的调用例 无参类方法调用class SumCclass SumC static void sum( ) static void sum( ) int i, j, s; int i

8、, j, s; i=3; i=3; j=6; j=6; s=i+j; s=i+j; System.out.println(s); System.out.println(s); public static void main(String args) public static void main(String args) sum( ); sum( ); 方法的调用2、对象方法调用对于对象方法,必须先生成对象实例,然后用如下形式调用方法: 对象名.方法名(实参)class MyObjectstatic int x=10;static int y=20;void method(int k,int

9、m)int sum;sum=k+m;System.out.println(sum=+sum);public static void main(String args)MyObject obj=new MyObject(); /生成对象obj.method(x,y); /调用对象方法方法的调用/对象方法(实例方法)调用示例:对象方法(实例方法)调用示例:class Car int speed; /变量定义部分。变量定义部分。 float weight=12,height=2; /变量定义部分。变量定义部分。 void changSpeed(int newSpeed) /对象方法定义。对象方法定义

10、。 speed=newSpeed; float getWeight() /对象方法定义。对象方法定义。 return weight; float getHeight() /对象方法定义。对象方法定义。 return height; public static void main(String args) Car myCar=new Car( ); myCar.changSpeed(120); System.out.println(车速度为车速度为:+myCar.speed); System.out.println(车的重量为:车的重量为:+myCar.getWeight(); System.o

11、ut.println( 高度为:高度为:+myCar.getHeight(); 方法的调用/对象方法(实例方法)调用示例:注意对象方法(实例方法)调用示例:注意x,y的值是否变化?文件名如何命名?的值是否变化?文件名如何命名?class Tom void f(int x,double y) x=x+1; y=y+1; System.out.println(参数参数x和和y的值分别是的值分别是:”+x+” ,”+y); public class Example public static void main(String args) int x=10; double y=12.58; Tom t

12、om=new Tom(); tom.f(x,y); System.out.println(main方法中方法中x和和y的值仍然分别是的值仍然分别是:“+x+” ,”+y); 参数的传递参数传递要点:虚实结合参数传递要点:虚实结合“三一致三一致”原则即实参与虚参个数、原则即实参与虚参个数、类型、顺序一致。类型、顺序一致。例例4-5 4-5 参数传递实例参数传递实例public class Swapingpublic class Swaping static void swap(int x , int y ) static void swap(int x , int y ) int temp ;

13、int temp ; temp = x; x = y; y = temp; temp = x; x = y; y = temp; public static void main(String args) public static void main(String args) int u=23 , v=100; int u=23 , v=100; System.out.println(Before Calling); System.out.println(Before Calling); System.out.println(u= +u+ v= +v); System.out.println(

14、u= +u+ v= +v); swap(u, v); swap(u, v); System.out.println(After Calling); System.out.println(After Calling); System.out.println(u= +u+ v= +v); System.out.println(u= +u+ v= +v); 参数的传递class Lader double above,bottom,height; public void setAbove(double a) above=a; public void setBottom(double b) bottom

15、=b; public void setHeight(double h) height=h; double computeArea() return (above+bottom)*height/2.0; public class Example public static void main(String args) double area=0; Lader laderOne=new Lader(); laderOne.setAbove(10); laderOne.setBottom(40); laderOne.setHeight(2); area=laderOputeArea(); Syste

16、m.out.println(laderOne的面积是:+area); 方法的嵌套在解决较为复杂的问题时,用到方法调用的地方比较多。如果在一个方法的方法体中又调用了另外的方法,这就被称为方法的嵌套调用,也称方法的嵌套。【例4-7】用方法的嵌套求立方体的体积程序分析: main()方法中,调用vol()方法求立方体的体积,转到vol()方法体中又调用了area()方法求面积。这种在调用一个方法vol()的方法体中又调用另外的一个方法area()的做法,就是方法的嵌套方法的嵌套public class Volumepublic class Volume public static void main

17、(String args ) public static void main(String args ) int i=5,j=6,k=7,v; int i=5,j=6,k=7,v; v=vol(i,j,k); v=vol(i,j,k); System.out.println( System.out.println(立方体的体积为:立方体的体积为:+v);+v); static int vol(int a,int b,int c) / static int vol(int a,int b,int c) /求体积的求体积的vol()vol()方法方法 return(a return(a* *are

18、a(b,c);area(b,c); static int area(int x,int y) / static int area(int x,int y) /求面积的求面积的area()area()方法方法 return(x return(x* *y);y); 递归 方法嵌套中更为特别的是,如果在被调用一个方法的方法体中又调用一个方法,而这个方法正是它自身,即:如果在一个方法的方法体中又调用它自身的方法嵌套称为方法的递归。递归 例:采用递归算法求n!fac(n)=1 n=1n*fac(n-1)递归 class Factorial static long fac( int n ) if (n=1

19、 ) return 1; else return n*fac(n-1); public static void main(String args) int k ; long f; k=25; f=fac(k); System.out.println(f); 递归例:Fibonacci数列是这样的一列数: 1,1,2,3,5,8,13,21,34,55,第n个Fibonacci数的递归描述为:2) 1()2(2 , 11)(nnfnfnnfpublic class Fibo public static void main(String args ) for(int i=1;i=20;i+) Sy

20、stem.out.print(f(i)+ ); if (i%10= =0)System.out.println(); static int f(int n) if(n= =1|n= =2)return 1; else return(f(n-2)+f(n-1); 递归递归 汉诺塔问题(P204 6.37) 问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。解答结果

21、请自己运行计算,程序见尾部。面对庞大的数字(移动圆片的次数)18,446,744,073,709,551,615,看来,众僧们耗尽毕生精力也不可能完成金片的移动。后来,这个传说就演变为汉诺塔游戏: 1.有三根杆子A,B,C。A杆上有若干圆盘 2.每次移动一个圆盘,小的只能叠在大的上面 3.把所有圆盘从A杆全部移到C杆上递归 移动n个圆盘可以看成只移动n-1个圆盘再加上移动最后一个(最大)圆盘的过程: 从A移动n-1个圆盘到B,C做临时的存放 从A移动最后一个圆盘到C 从B移动n-1个圆盘到C,A做临时的存放柱子A柱子B柱子C递归 递归结束的条件为:n=1时,从A移动最后一个圆盘到C 我们可定义

22、方法hanoi(int n,char a,char b,char c)表示移动n个圆盘从a到c,以b做临时的存放moves(char d,char e)表示移动一个圆盘从d到e上页过程可表示为hanoi(n-1,a,c,b);moves(a,c); hanoi(n-1,b,a,c);递归 递归结束的条件可表示为:if(n=1) moves(a,c);完整的程序见“Hanoi_Example.java”方法的重载 Java允许在同一类中声明多个相同名称的方法。但要求各方法具有不同的参数集(根据参数的个数和类别来判别)。这种技术称为方法重载。 调用重载方法时,java编译器通过检查参数个数和类型选择一个适当的方法。 方法重载常用于创建多个具有相同名称的方法,它们执行类似任务,但是具有不同的参数类型。结束结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com