Java讲解方法_第1页
Java讲解方法_第2页
Java讲解方法_第3页
Java讲解方法_第4页
Java讲解方法_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 class AreaCAreaC static void static void area(intarea(int a , a , intint b ) b ) intint s; s; s = a s = a * * b; b;

7、System.out.println(sSystem.out.println(s); ); public static void public static void main(Stringmain(String argsargs) ) intint x = 5; x = 5; intint y=3; y=3; area(xarea(x, y); /, y); /方法语句,直接调用类方法方法语句,直接调用类方法 方法的调用例 无参类方法调用class class SumCSumC static void sum( ) static void sum( ) intint i, j, s; i,

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

9、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.out

11、.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 tom

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

13、emp ; temp = x; x = y; y = temp; temp = x; x = y; y = temp; public static void public static void main(Stringmain(String argsargs) ) intint u=23 , v=100; u=23 , v=100; System.out.println(BeforeSystem.out.println(Before Calling); Calling); System.out.println(uSystem.out.println(u= +u+ v= +v);= +u+ v=

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

15、oid 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(); System.out.printl

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

17、id main(Stringmain(String argsargs ) ) intint i=5,j=6,k=7,v; i=5,j=6,k=7,v; v= v=vol(i,j,kvol(i,j,k);); System.out.printlnSystem.out.println(立方体的体积为:立方体的体积为:+v);+v); static static intint vol(intvol(int a,inta,int b,intb,int c) / c) /求体积的求体积的volvol()()方法方法 return(areturn(a* *area(b,carea(b,c);); stat

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

19、*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+) System.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个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放

温馨提示

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

评论

0/150

提交评论