- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java面向对象语言 第5章 方法 方法定义 调用方法 Void方法 传值参数 模块化代码 问题:十进制转换成十六进制 方法重载 变量的作用范围 数学类 举例:生成随机字符 Method Abstraction and Stepwise Refinement 方法介绍 假设需要计算若干个十个数的和,如分别从1-10,从20-30,和从35到45的和,按之前我们的做法,代码书写如下。 显然十分的麻烦,同时我们发现他们之间有些相似之处,仅仅是起始和终止的整数不同,其他都类似。我们写一个通用的代码是不是会更好?当然,我们可以定义一个方法,这个方法就是可以反复使用。基于此,代码进一步进行改写如下。 方法定义 方法定义的语法如下: 方法可以返回一个值,returnValueType是返回值的返回类型。可以不返回值,即returnValueType为void。如main方法就死void,不返回任何值。在方法头部定义的变量称为形式参数或简单参数。一个参数就如一个占位符,当一个方法被调用时,要传递一个值给这个参数,这个值称实际参数。参数列表指一个方法的参数的类型,顺序以及个数。参数是可选的,即一个方法可以没有参数,如Math.random()方法没有参数。 如下的方法是找到两个整数中的较大者。 因为这个方法要返回一个整数,因此要在语句中包含有return语句。其他编程语言中,方法被叫做过程或函数,返回值的称函数,不返回值的称过程。在定义方法参数的时候要分别为每一个参数定义类型,如max(int num1, int num2),而不是max(int num1, num2)。 调用方法 定义好方法之后,还要使用方法,称方法调用。根据方法是否有返回值,有2种方式调用方法。 对于有返回值的方法调用,通常以一个值来对待,如下 对于返回void的方法,以一条语句来代替。如下例。 注意:一个具有返回值的方法也可以被当做Java语句被调用,这种情况下会忽略返回值,只有当对返回值不敢兴趣的时候才可用。完整的程序如下。 方法调用 程序包含2个方法,main和max,其中main方法由JVM来调用,在main方法的语句中,可用调用类定义的其他方法,也可以调用其他类定义的方法。如max方法和main定义在同一个类中,由类(或类生成对象)调用。 方法(a)在逻辑上是正确的,但编译会出错,原因就是编译器任务程序可能会没有返回值。(b)是修改后的方法,这个方法是正确的,原因是编译器看到不管哪个if语句被执行都会有返回值。 方法使得代码能够分享和重用,max方法可以在这个类以外的任意位置被调用。如TextMax.man(1,2); 调用方法 调用栈 方法的每次调用,系统都会用内存中开辟的一块叫栈的空间来保持参数和变量的值。理解调用栈,对于我们理解方法和调用有很大的帮助。 Void 方法举例 上述例子给出了一个有返回值的方法,下面讲述如何定义和调用void方法。如下图。使用语句来调用void方法printGrade()。 为了观察和返回值方法的不同,先把void方法进行改写getGrade(),如下。 getGrade方法可以在字符出现的任何位置被调用。而printGrade方法没有返回值,因此必须用语句调用。 注意:虽然return语句没有必要用在void方法中,但它可以被用来终止方法并返回给方法的的掉用者。简单的语法为:return; 这种做法并不是经常的,但对于在void方法中的进行控制流程很有用。如下代码,当分数非法时,方法会返回并终止执行。 传值参数 一个方法的强大是因为它的参数,我们可以用println方法打印一个字符串,用max找到两个整数的最值。当调用一个方法时,我们需要提供实参,实参的顺序和类型等修饰必须和方法定义的形参对应,这叫做参数顺序结合。如下例打印n次信息的方法。 我们可以用nPrintln(“Hello”, 3);来打印Hello字符串3次,语句中“Hello”的值被传递给形式参数message, 3被传递给形参整数n。但如果语句nPrintln(3 , “Hello”);就会出错,因为3的类型没有和第一个形参message类型匹配,第二个参数也没能匹配。 注意:实参必须按顺序,数量和兼容类型(如可以把int传给double)与形参匹配。 当我们调用方法时,实际参数的“值”传递给形式参数,我们称按值传递参数。即如果传递的实参是一个变量,把变量的值给形参,而不是把变量的地址传给形参,即使以后传递的参数在方法中被改变,也不会影响到实际参数的值。如下程序当中x(1)的值被传递给参数n,虽然之后n的值增加1,但x的值不受影响。 但如下程序定义一个交换两个变量值的方法。通过传递2个实际
文档评论(0)