7.1 函数的调用

初中的代数就出现过函数。如f(x)=3x+4,只要给出x的值,就能算出f(x)的值。函数简单来说,就是:输入、输出。
用文化角度来说,函数就相当于逻辑里面的因果,有因就有果。因是输入,果是输出。 只要因改变了,果就会改变。
在学习函数定义之前,我们先学习一下函数的调用。函数的调用需要知道三件事:
1.函数有什么功能
2.函数需要什么参数
3.函数的返回值是什么
有时候我们可以看到类似这样的函数说明:
double findMaxValue(double[],int)
首先开始的double表示这个函数最终的计算结果是double类型的值,括号里面的double[ ] 和int表示这个函数需要两个参数,第一个参数是double类型的数组,第二个参数是一个整数int。可能还会配上文字说明这个函数是什么功能的。假如我们知道了它的功能是从double数组里面,从第二个参数开始的下标一直到数组末尾,找里面的最大值,那么我们可以这样调用它:
double b[]={103,4,6.7,8.9,-98,-3,0};
double c=findMaxValue(b,0);
c的值就是数组从下标0开始找到末尾的最大值,c的值将会是103。
如果c=findMaxValue(b,2);c的值就是数组从下标2开始找到末尾的最大值,c的值将会是9(当然我们现在直接使用这个函数是不可能的,因为findMaxValue并不存在)。
函数调用最大的特点是:你无需知道函数内部的实现细节换句话说,你不用知道函数是怎么实现的就可以使用它
例如我们经常使用的System.out.println函数,它接收0个或1个参数,功能是打印参数到控制台,它没有返回值。如果你给它两个参数,那么就会出现语法错误了。 我们使用了这么久,并不知道它到底是怎么打印的,就算不知道它怎么工作的也不影响我们使用它。
日常生活中,我们一直在使用类似的“函数”:按电视遥控器,使用手机,刷卡付费等等
我们根本不需要知道它是怎么运作的,我们不是设计者,我们是使用者。
关于函数调用要注意的是: 函数调用的时候,参数的个数、类型要一致。假设有一个func,它的参数x的类型在定义的时候是int,那么在调用func的时候,就必须把一个整数传进去。 函数最后的返回值(也就是应变量),需要用一个变量保存。否则函数就算计算完了你也得不到结果。就像写上“a+b;”这样的代码,a+b是计算出来了,但是没有用一个变量保存结果,所以这样的计算是无意义的,这样写“c=a+b;”,结果就到了c,后续可以继续拿来使用。函数计算和这个一样。
函数可以重复调用,例如,第1行和第3行都使用了func函数:
int b=func(6);
System.out.println(b);
b=func(5);
System.out.println(b);