Java讲解方法

上传人:沈*** 文档编号:229815995 上传时间:2023-08-22 格式:PPT 页数:35 大小:688KB
收藏 版权申诉 举报 下载
Java讲解方法_第1页
第1页 / 共35页
Java讲解方法_第2页
第2页 / 共35页
Java讲解方法_第3页
第3页 / 共35页
资源描述:

《Java讲解方法》由会员分享,可在线阅读,更多相关《Java讲解方法(35页珍藏版)》请在装配图网上搜索。

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

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

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

4、的方法(有参方法)static int square(int x)int s;s=x*x;return(s);方法的声明例 求最大值的方法intmax3(intx,inty,intz)intbig;if(xy)big=x;elsebig=y;if(bigmax)max=x;else max=y;return max;方法的声明对象方法是没有static修饰符修饰的方法,必须生成对象实例才能够使用该方法。如:classCarintspeed;/变量定义部分。floatweight,height;/变量定义部分。voidchangSpeed(intnewSpeed)/对象方法定义。speed=ne

5、wSpeed;floatgetWeight()/对象方法定义。returnweight;floatgetHeight()/对象方法定义。returnheight;方法的调用1、类方法调用 类方法可以直接调用或通过类名.方法名(实参)调用,不需生成对象。对于有返回值的类方法作为表达式或表达式的一部分来调用,其在表达式中出现的形式为:方法名(实际参数表)方法的调用例 调用类方法public class SquareC static int square(int x)/类方法 int s;s=x*x;return(s);public static void main(String args)int

6、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*b;s=a*b;System.out.println(s);System.out.println(s);public static void main(String args)public static voi

7、d 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,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)publi

8、c static void main(String args)sum();sum();方法的调用2、对象方法调用对于对象方法,必须先生成对象实例,然后用如下形式调用方法:对象名.方法名(实参)classMyObjectstaticintx=10;staticinty=20;voidmethod(intk,intm)intsum;sum=k+m;System.out.println(sum=+sum);publicstaticvoidmain(Stringargs)MyObjectobj=newMyObject();/生成对象obj.method(x,y);/调用对象方法方法的调用/对象方法(实

9、例方法)调用示例:对象方法(实例方法)调用示例:class Car int speed;/变量定义部分。变量定义部分。float weight=12,height=2;/变量定义部分。变量定义部分。void changSpeed(int newSpeed)/对象方法定义。对象方法定义。speed=newSpeed;float getWeight()/对象方法定义。对象方法定义。return weight;float getHeight()/对象方法定义。对象方法定义。return height;public static void main(String args)Car myCar=new

10、Car();myCar.changSpeed(120);System.out.println(车速度为车速度为:+myCar.speed);System.out.println(车的重量为:车的重量为:+myCar.getWeight();System.out.println(高度为:高度为:+myCar.getHeight();方法的调用/对象方法(实例方法)调用示例:注意对象方法(实例方法)调用示例:注意x,y的值是否变化?文件名如何命名?的值是否变化?文件名如何命名?class Tom void f(int x,double y)x=x+1;y=y+1;System.out.printl

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

12、 class Swapingpublic class Swaping static void swap(int x,int y)static void swap(int x,int y)int temp;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.print

13、ln(Before Calling);System.out.println(u=+u+v=+v);System.out.println(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);参数的传递classLaderdoubleabove,bottom,height;publicvoidsetAbove(doublea)above

14、=a;publicvoidsetBottom(doubleb)bottom=b;publicvoidsetHeight(doubleh)height=h;doublecomputeArea()return(above+bottom)*height/2.0;publicclassExamplepublicstaticvoidmain(Stringargs)doublearea=0;LaderladerOne=newLader();laderOne.setAbove(10);laderOne.setBottom(40);laderOne.setHeight(2);area=laderOputeAr

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

16、oid main(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*area(b,c);return(a*

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

18、-1);publicstaticvoidmain(Stringargs)intk;longf;k=25;f=fac(k);System.out.println(f);递归例:Fibonacci数列是这样的一列数:1,1,2,3,5,8,13,21,34,55,第n个Fibonacci数的递归描述为:public class Fibo public static void main(String args)for(int i=1;i=20;i+)System.out.print(f(i)+);if(i%10=0)System.out.println();static int f(int n)if

19、(n=1|n=2)return 1;else return(f(n-2)+f(n-1);递归从程序设计的角度来说,递归调用必须解决两个问题:一是递归计算的公式,二是递归结束的条件。每一个要使用递归的方法解决的问题,都要先考虑好这两个方面。如本例说到的递归描述中就包含了这两个条件,其中:递归计算公式:f(n)=f(n-2)+f(n-1)递归结束条件:f(1)=1,f(2)=1递归汉诺塔问题(P2046.37)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这

20、根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。解答结果请自己运行计算,程序见尾部。面对庞大的数字(移动圆片的次数)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做临时的存

21、放柱子A柱子B柱子C递归递归结束的条件为:n=1时,从A移动最后一个圆盘到C我们可定义方法hanoi(intn,chara,charb,charc)表示移动n个圆盘从a到c,以b做临时的存放moves(chard,chare)表示移动一个圆盘从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编译器通过检查参数个数和类型选择一个适当的方法。方法重载常用于创建多个具有相同名称的方法,它们执行类似任务,但是具有不同的参数类型。结束结束

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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