第3章方法 ava 3.1定义方法 3.2调用方法 3.3参数传递 34递归 3.5方法重载 3.6习题
第3章 方法 3.1 定义方法 3.2 调用方法 3.3 参数传递 3.4 递归 3.5 方法重载 3.6 习题
3.1定义方法 ava 返回值类型方法名(形式参数表) 方法体 Jaa语言中的方法与其他语言中的函数或 过程类似。它用于实现类的行为,只能作为 类的一部分存在
3.1 定义方法 返回值类型 方法名(形式参数表) { 方法体 } Java语言中的方法与其他语言中的函数或 过程类似。它用于实现类的行为,只能作为 类的一部分存在
3.1定义方法(续) ava 返回值类型方法名形式参数 Sint area(int d, int b) 方法体 return a*b 返回值
3.1 定义方法(续) int area(int a,int b) { return a*b; } 返回值类型 方法名 形式参数 返回值 方法体 方法头
3.1定义方法(续) ava return语句的一般使用方式如下: return表达式; 其作用是首先计算出表达式的值,并返回这个值,然 后结束该方法的执行。 如果某个方法没有返回值, return语句就可有可无 如果没有 return语句,该方法在被调用时,执行方法 的最后一条语句后,就自动结束方法的执行。如果有 return语句,这时, return语句应表示为: return 个方法中允许出现多个 return语句,分别用于不同 条件下的方法返回
3.1 定义方法(续) return语句的一般使用方式如下: return 表达式; 其作用是首先计算出表达式的值,并返回这个值,然 后结束该方法的执行。 如果某个方法没有返回值,return语句就可有可无。 如果没有return语句,该方法在被调用时,执行方法 的最后一条语句后,就自动结束方法的执行。如果有 return语句,这时,return语句应表示为: return; 一个方法中允许出现多个return语句,分别用于不同 条件下的方法返回
3.2调用方法 ava 方法调用的一般形式如下 方法名(实际参数表) 方法调用是一个表达式,其中的括号是方 法调用运算符。表达式的值是被调用方法 的返回值,它的类型就是方法定义中指定 的方法返回值的类型。 例3-3调用方法 源代码
3.2 调用方法 方法调用的一般形式如下: 方法名(实际参数表) 方法调用是一个表达式,其中的括号是方 法调用运算符。表达式的值是被调用方法 的返回值,它的类型就是方法定义中指定 的方法返回值的类型。 例3-3 调用方法 源代码 运 行
3.3参数传递 ava 是指实参与形参的结合过程。 按值传递时,系统首先为被调用方法 的形参分配内存空间,并将实参的值 按位置一一对应复制给形参,此后, 被调用方法中形参值的任何改变都不 会影响到实参。 例3-4传值调用 源代码
3.3 参数传递 是指实参与形参的结合过程。 按值传递时,系统首先为被调用方法 的形参分配内存空间,并将实参的值 按位置一一对应复制给形参,此后, 被调用方法中形参值的任何改变都不 会影响到实参。 例3-4 传值调用 源代码 运 行
34递归 ava 递归过程分两个阶段: 第1个阶段为“递推” 4=4*3!→3!=3*2!→21=2*11→11=1*0!→0!=1(已知) 第2个阶段为“回归” 0=1(已知)-小11=1*0=12-=2*11=2-3!=3*2=6+4=4*3!=24 例3-5用递归方法求 bonacci数列的第n项 Fibonacci数列的定义为 F(m)= F(n-1)+F(n-2)当n>2时 源代码
3.4 递归 递归过程分两个阶段: – 第1个阶段为“递推”。 4!=4*3! 3!=3*2! 2!=2*1! 1!=1*0! 0!=1(已知) – 第2个阶段为“回归”。 0!=1(已知) 1!=1*0!=1 2!=2*1!=2 3!=3*2!=6 4!=4*3!=24 例3-5 用递归方法求Fibonacci数列的第n项 Fibonacci数列的定义为: − + − = = = 当 时 当 时 当 时 ( 1) ( 2) 2 1 2 1 1 ( ) F n F n n n n F n 源代码 运 行
34递归(续) ava 使用递归调用编写的程序简洁清晰,容易理解 不过,时间和空间的开销比较大,有时甚至会 引起栈溢出 例3-6 Hanoi塔问题的求解 有三根针,设为A、B、C。A针上从大到小套着大小互不相等n个 金片,大的在下,小的在上。要求把这n个金片从A针移到C针,在移动 过程中只能借助B针,每次只允许移动一个金片,同时要求无论在哪根 针上都只允许小的金片压在大的上面。 源代码
3.4 递归(续) 使用递归调用编写的程序简洁清晰,容易理解。 不过,时间和空间的开销比较大,有时甚至会 引起栈溢出。 例3-6 Hanoi塔问题的求解 有三根针,设为A、B、C。A针上从大到小套着大小互不相等n个 金片,大的在下,小的在上。要求把这n个金片从A针移到C针,在移动 过程中只能借助B针,每次只允许移动一个金片,同时要求无论在哪根 针上都只允许小的金片压在大的上面。 源代码 运 行
3.5方法重载 ava 是指建立多个同名的方法,但方法的形参表 互不相同。 调用方法时,Java系统优先选择与实参完全匹 配的方法,如果找不到完全匹配者,就进行 自动类型转换以使实参与形参匹配。 例3-7方法重载 源代码
3.5 方法重载 是指建立多个同名的方法,但方法的形参表 互不相同。 调用方法时,Java系统优先选择与实参完全匹 配的方法,如果找不到完全匹配者,就进行 自动类型转换以使实参与形参匹配。 例3-7 方法重载 源代码 运 行
3.5方法重载(续) ava 獒虿柒閤券滢粉婴表都个是剁仅仅是返 例 class A tatic int f(int a) return 1 static double f(int a) public static void main(string[] arg f(1);//无法判断调用哪个方法
3.5 方法重载(续) 重载方法的返回类型可以相同,也可以不同。但如果仅仅是返 回类型不同,而方法名和形参表都相同,则是非法的。 例: class A { static int f(int a) { return 1; } static double f(int a) { return 1.0; } public static void main(String[] args) { f(1); //无法判断调用哪个方法 } }