函数的定义:
方法:对单独功能模块或不连续的重复性代码的封装
定义:
public static 返回类型 方法名(形参列表){
// 方法体 完成功能所书写的语句
}
/* PS:方法本身是一个单独的模块,所以它的定义是在其他方法之外的。
所有的方法都是平行关系,千万注意不要在一个方法里面定义另一个方法
方法的定义只能写在Java类的花括号中
*/
// 修饰符 --- 定义本方法的访问范围和访问方式 目前固定书写为 Public static
// 返回类型 -- 定义本方法在执行结束后,是否有返回的结果,该结果是什么数据类型(能且只能书写一个)
// 函数名(方法名)-- 定义方法是给方法取的名字属于自定义标识符,按照规范书写即可
// 行参列表 -- 定义本方法在执行前需要从使用者身上得到的初始数据,如果没有初始数据,那么可以不写
// 方法体 -- 书写任意的语句,实现该方法所要完成的功能即可
1、对函数定义位置的说明:
a- 方法本身是一个单独功能模块的封装,所以它的定义必须要在其他方法之外;
b- 所有的方法都是平行关系,千万别在另一个方法里面去定义另一个方法
c- 方法的定义只能书写在Java类的定义(花括号)中
2、参数 可以从方法外部传入数据进行运算
分类:
形参 形式上参数(具体的参数数据,需要在调用方法时由使用者给出,所以定义方法的时候,只能使用变量声明语法,先确定参数的类型、个数和顺序)
实参 在调用方法时,真正给形参传递的数据,形参定义的类型、个数和顺序是什么样的,给实参是就是什么类型、个数和顺序
public static void compare(int num1,int num2,int num3){
}
public static void compare1(String str,int num2,double num3){
}
// 调用 方法时 compare1("abcd",100,3.14);
3、返回类型 -- 定义本方法在执行结束后,是否有返回的结果,该结果是什么数据类型(能且只能书写一个)
4.方法重载
在同一个类中,同名方法有不同的参数列表,称之为方法重载
参数列表不同:参数类型,或参数个数,或参数顺序不同和参数名无关
5.递归
当方法自已调用自已时,根据方法的执行流程,会形成一种类似于循环执行该方法的情况,就称之为“递归”
递归是我们所学的“第四种循环”
递归一定要有结束的条件,没有结束条件的话,进入无止境的递归,最终导致内除被完全消耗,
递归适用于:原始问题可以转换为为问题解决方案相同且规模更小的新问题,知道问题规模小到某一基本情况为止(递归结束的条件)
递归的使用特点
可采用递归算法解决的问题有这样的特点:
- 原始的问题转化为解决方法相同的新问题
- 而新问题的规模要比原始的问题小
- 新问题又转化为规模更小的问题;
- 直到最终归结到最基本的情况---递归的终结条件。
a- 方法执行结束后,没有返回的结果 void(无返回值)
b-方法执行结束后,有需要返回的数据,此时需要把返回类型书写为返回数据的数据类型(基本或引用数据类型)
要返回的数据 叫做 返回值 通过语法 return 返回值;
PS: 1 如果方法定义了返回类型(不是void),就必须给方法返回数据,如果不给会报错
2 如果方法定义了返回类型(不是void),那么调用方法的语句可以将其视作一个数据进行操作(声明变量保存、输出、通过运算符对其进一步运算都可)
3 如果方法定义的返回类型为void,那么不能使用 return 返回值;这一语法,且不能调用该方法的语句视作数据进行操作
4 如果方法定义的返回类型为void,虽然不能使用return 返回值这一语法,但能使用return关键字,因为return关键字,除了可以用于返回数据之外,还可以用于结束方法
6.return的作用:
返回类型是void:return可以终止方法
其他类型的话:return 后要加返回值
7.方法调用栈:
当多个方法出现嵌套调用时,最先执行的方法最后结束;此时,呈现出一种“先进后出”的栈结构,称之为 方法调用栈
在使用方法调用时,注意不要产生方法本身调用自已的情况
如果出现,那么就有可能出现Stack0verflowError(堆栈溢出错误)