第二章 第一个游戏
系列教程导航2.4 Java基础四 函数
文章目录
打印语句
我们经常使用打印语句来在控制台上输出一些内容,这样就可以方便地查看程序中的一些内容。但是,你有没有想过这个打印的功能究竟是怎么实现的呢?
事实上,要实现打印语句的功能,需要写数十行代码!也就是说,假如没有打印语句,我们在程序里面随便实现几个打印功能就可能需要写下数百行代码!尽管很多内容可以复制粘贴,这也给程序的编写和纠错带来了极大的麻烦。
于是,函数这个概念就出现了。简单来说,我们可以把实现打印功能的这数十行代码全部放进一个函数里,然后每当我们想要打印的时候,只需要执行这个函数就好了。
事实上,打印语句就是在执行这个函数,所以我们才能仅仅用一句代码实现打印的功能。
函数的好处还远远不止上面说到的那一点。接下来,你将会具体学习到函数的知识。
函数
定义:定义在类中的具有特定功能的一段独立小程序,也可以叫做方法
定义里面提到了类这个词,目前你还没有学,所以忽略即可,不影响理解。
格式:
修饰符 返回值类型 函数名(参数类型1 形式参数1, 参数类型2 形式参数2, ...)
{
执行语句;
return 返回值;
}
上面的格式里面有很多名词,这里给出一些简单的解释:
- 修饰符,也就是给函数加的各种表修饰的关键字。修饰符可以没有,也可以有很多
- 返回值类型,函数运行后的结果的数据类型(这个词是必填的,如果没有返回值,则填void)
- 参数类型,对应的形式参数的数据类型
- 形式参数,其实就是一个变量,用于储存调用函数的时候传递给函数的实际参数
- 实际参数,传递给形式参数的具体数值
- return,关键字,用于返回返回值并结束函数
- 返回值,该函数运算后的结果,该结果会返回给函数的调用者
函数的格式很复杂,所以即使上面的格式没有完全看懂也没有关系,我们接下来会以几个例子来进行具体说明:
例1:
public static void main(String[] args){
System.out.println("...");
}
有没有一种很熟悉的感觉!是的,你可以去看看你的AIDE里的那个Java程序,里面就有这个函数。它的名字叫做主函数,是整个Java程序的入口。也就是说,(按照目前的知识来讲)Java程序是从主函数开始执行的。
我们逐步分析一下这个主函数的格式:
- public,这就是主函数的一个修饰符,它是一个权限修饰符,加上它之后,这个函数可以随处使用
- static,这也是主函数的一个修饰符,代表静态。我们暂时不用了解静态的知识,故此处不细讲
- void,这是主函数的返回值类型,void代表函数没有返回值
- main,这是主函数的函数名
- String[],这是主函数的形式参数的参数类型
- args,这是主函数的形式参数
- 注意到我们没有写return语句。这是因为主函数的返回值类型是void,也就是没有返回值,所有说可以不写return,此时函数会一直执行到该函数的最后一行。如果你想要在中途结束函数的话,也可以使用return;提前结束函数(后面不要写任何语句,因为执行不到)
顺便提一下,在这个函数里面,我们调用了一个函数,它的函数名是println,接受了一个字符串类型的形式参数。这个函数就会将这个字符串打印在控制台上。
例2:
int add(int a, int b){
int c = a + b;
return c;
}
- int,这是该函数的返回值类型,是整数类型
- add,这是该函数的函数名
- 后面的两个int是形式参数a和b的参数类型
- a和b也就是add函数的形式参数,可以在函数里面使用
- return c;将c的值作为返回值返回给函数的调用者。
这是一个非常简单的计算两个整数的和的函数。它接受两个整数类型的参数,并计算它们的和,然后返回这个和。
接下来我们在AIDE里面真正的写一个函数,并调用它,体验一下定义函数和使用函数的整个过程。
为了方便,我们创建一个新的Java程序。如果你忘记了的话,可以回顾一下这篇文章。
删除多余的语句,只留下这个部分
我们按照例2的方式定义一个add函数:
接着,我们在主函数里面使用这个函数,并打印它的返回值:
这里就出现了问题:由于主函数有一个static修饰符,所以说它所调用的函数都需要是静态的,也就是需要被static关键字修饰。所以我们给add方法加上static关键字
这里简单提示一下,不要傻乎乎的敲整个词,善于使用AIDE的提示框
好啦,现在我们的程序就没有问题了。我们运行一下这个程序,结果如下:
OK!任务完成!
函数的重载
不知道你发现没有,在上面的例子里面我使用输出语句打印了一个整数。要知道,我们之前打印的一直都是字符串。这难道不是很奇怪吗?
我们在前一个部分提到过,函数的形式参数都有对应的参数类型,而println这个函数自然也不例外。它可以接受一个字符串类型的参数,并将其打印在控制台上。但是我们传入一个整数类型的参数,它照样打印了。这是为什么呢?
这种现象被称为函数的重载。它的概念是,在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
函数的重载有什么好处呢?举个例子,打印函数println可以接受很多类型的值,并将它们打印在控制台上。所以说我们如果想要实现打印的功能的话,只需要记住这一个函数名,然后往里面传入想要打印的数据就行了。假如没有重载,我们就需要记住各种不同的打印函数名以及对应的参数。
这里我给出一个小练习:由于上面例子中的add方法只能计算两个整数的和,请利用函数的重载,定义一个add方法,计算三个整数的和并将其返回。
后记
学完本节之后,相信你对函数已经有了初步的认识。接下来,我简单地说一下函数的特点:
- 封装功能代码(想一想你的手机为什么要把各种元件用手机壳包起来)
- 便于复用功能,函数一般可以多次重复调用
- 只有被调用才会被执行
- 提高了代码的复用性(可以重复调用)
使用函数的时候要注意,函数里面只能调用函数,不能定义函数。
函数是非常重要的基础知识,请你一定要掌握。在后面的教程里面,我们也会频繁的定义函数和使用函数,相信你会变得越来越熟练。
感谢你的阅读!本教程会长期不定时更新。本人不是大神,也会犯错,如果有建议或者提问的话,欢迎评论留言!
系列教程导航