调用方法时,可以向方法传递一个或多个值.如前所述,向方法传递的值称为实参(argument).在方法中接收实参的变量被称为形参(parameter).形参的声明在方法名后的圆括号中.形参的声明语法与用于变量的语法是一样的.形参位于自己方法的作用域中,起着接收实参的特殊任务,工作方式与局部变量十分相似.
下面是一个使用了形参的简单示例.在ChkNum类中,如果传递给isEven()的值是偶数,就返回true,否则返回false.因此,isEven()有boolean返回类型.
public class test2 { // @param args public static void main(String args[]) { ChkNum e = new ChkNum(); if(e.isEven(10)) System.out.println("10 is even"); if(e.isEven(9)) System.out.println("9 is even"); if(e.isEven(8)) System.out.println("8 is even"); } } class ChkNum { boolean isEven(int x) { if( (x % 2) == 0) return true; else return false; } }
输出:
10 is even 8 is even
在程序中,isEven()被调用了三次,每一次都有不同的值传递给他,下面我们来详细介绍这一过程.首先,注意如何调用isEven().实参在圆括号之间被指定.当第一次调用isEven()时,传递给他的值是10.因此,当isEven()开始执行时,形参x接收值10.在第二次调用中,9是实参,所以x得到值9.在第三次调用中,实参为8,x接收值.在调用isEven()时,作为实参传递的值正是形参x接收的值.
一个方法可以有多个形参,声明形参时,只需用逗号将形参分隔开即可.例如,Factor类定义了一个名为isFactor()的方法,该方法用于确定第一个形参是否是第二个形参的因数.
public class test2 { // @param args public static void main(String args[]) { ChkNum e = new ChkNum(); if(e.isFactor(2, 20)) System.out.println("2 is factor"); } } class ChkNum { boolean isFactor(int a, int b) { if((b%a) == 0) return true; else return false; } }
输出:
2 is factor
注意,在调用isFactor()时,实参也是用逗号分隔的.
在使用多个形参时,每个形参都指定了自己的类型,这些类型可以相互不同.例如,下面一行代码就是完全有效的:
int myMeth(int a,double b, float c)
向Vehicle添加带形参的方法
可以使用带形参的方法向Vehicle类添加新的功能:计算给定距离所需的耗油总量.新方法名称为fuelneeded(),该方法获取要行驶的英里数,返回所需汽油的加仑数.fuelneeded()方法定义如下:
double fuelneeded(int miles) { return (double)miles/mpg; }
注意,该方法返回一个double类型的值.这是非常有用的,因为行驶给定里程所需的耗油总量可能不是一个整数.输出如下:
To go 252 miles minivan needs 12.0 gallones of fuel To go 252 miles sportscar needs 21.0 gallones of fuel