什么是函数?

编程语言中函数和数学中的函数不是一个东西。它是为了解决特定问题具有名称的代码集合,也就是现实中一种行为动作。它可以实现代码的高度复用!!

Java中如何定义函数

格式:

访问修饰符 函数返回值的类型 函数名称([参数列表]){

//函数体

//retrun 返回值;

}

java有没有getch Java有没有函数_局部变量

java有没有getch Java有没有函数_函数重载_02

注:Java中函数是属于的!!!必须定义在中!!!所以函数是类成员,先把函数都定义静态函数,等学习了面向对象,再学习常规函数。

函数的分类

1、有没有参数

有参数

java有没有getch Java有没有函数_函数重载_03


java有没有getch Java有没有函数_java_04


无参数

java有没有getch Java有没有函数_Java_05


java有没有getch Java有没有函数_Java_06


2、有无返回值的函数

在函数中,如果遇到return关键字,函数值直接返回

无返回值的函数(上面的图就是)有返回值的函数

java有没有getch Java有没有函数_局部变量_07


java有没有getch Java有没有函数_java_08


3、定义者

系统函数、第三者、自定义函数局部变量

定义在函数中的变量叫做局部变量。意思是函数中定义的变量只适用与函数,而函数外的不适用,需重新定义。

所以:成员变量可以定义整个类,而局部变量只能定义函数类。

java有没有getch Java有没有函数_局部变量_09

如上图,flag(int num)和int num的变量num不是同一个变量,前者是局部变量,后者是成员变量。

函数重载(overload)

函数名称相同,函数的参数个数或者类型不同,调用的时候,自动匹配对应类型。

java有没有getch Java有没有函数_函数重载_10


java有没有getch Java有没有函数_Java_11


由上图可知,定义变量的类型不同,最后输出的函数也不同。

所有的编程语言都有函数重载吗?
函数重载是强数据类型语言(Java、C、C++、C#)所持有的景象,而若数据类型语言(JavaScript、python、Ruby)是不具备函数重载的。

递归(recursion)

它是函数自身调用自身的称呼。

它可以非常简单的解出一些题目,比如斐波那契数列、上楼梯问题等等。

斐波那契数列:

java有没有getch Java有没有函数_java_12


java有没有getch Java有没有函数_Java_13

上楼梯问题:

java有没有getch Java有没有函数_java_14


java有没有getch Java有没有函数_局部变量_15


优点:分支理念的体现,可以把非常复杂的问题简单解决。

缺点:非常消耗内存,所以当栈被全部占用后,会触发异常!!