Java 基础|函数 (方法) 详解 一、引入如果程序中大量书写重复代码会带来以下问题代码冗余可读性低后期不利于维护解决思路 把重复的代码只定义一次给这段代码起名字后续需要使用时直接通过名字调用执行。二、函数1. 概念函数是实现特定功能的一段程序代码可以通过函数名字被反复调用使用。2. 函数的使用流程函数的定义函数的声明确定函数功能、函数名称、参数、返回值函数的实现书写函数内部具体业务代码函数的调用通过函数名字执行函数完成对应功能3. 函数定义位置函数定义在类内部其他函数外部。当前阶段和 main 方法并列书写。三、函数的定义1. 基础语法public static void 函数名字(数据类型 变量名){ // 函数体实现功能的代码 }函数三要素返回值、函数名、形参列表。2. 函数名遵循标识符命名规范见名知意小驼峰命名第一个单词首字母小写其余单词首字母大写3. 参数参数调用者和函数之间传递的数据。语法public static void 函数名字(数据类型 变量名,数据类型 变量名)形式参数形参定义函数时括号中声明的变量。相当于函数内部的局部变量函数内部直接使用参数名。一个函数可以有多个形参每个参数都必须写数据类型类型相同也不能省略类型多个参数用逗号隔开。形参列表长度0 ~ n个。4. 返回值1void无返回值void代表函数不需要向调用者返回结果。public static void 函数名(形参列表){ // 可以不写return // 也可以写 return; 作用直接结束当前函数 return; }2有返回值8 种基本类型 / 引用类型函数执行完成后需要把结果返回给调用处。public static 数据类型 函数名(形参列表){ return xxx; // return后面数据类型必须和函数声明的返回值类型保持一致 }return 两大作用将函数执行结果返回给调用者结束当前函数return之后不能书写其他执行语句return 使用细节函数返回值类型不为void函数中必须保证有 return 返回数据。如果 return 写在分支内部必须保证每一条分支路径都存在 return 语句否则编译报错。四、函数的调用1. 无参函数调用函数名();2. 带参数函数调用函数名(实参1,实参2,实参3);实际参数实参调用函数时传入的数据用来给形参赋值。 ⚠️实参的类型、个数、顺序必须和形参列表保持一致。3. 带返回值函数调用数据类型 变量名 函数名(实参);有返回值函数三种处理方式使用相同类型变量接收返回值最常用数据类型 变量 函数名(实参);直接调用不接收返回值实际开发极少使用函数名(实参);直接写在打印语句或者运算表达式中只使用一次结果System.out.println(函数名(实参)); int res 10 函数名(实参);注意void无返回值函数不能直接放入System.out.println()打印。五、函数的作用减少代码冗余提高代码可读性提高代码可维护性提高代码复用性便于团队分工、协同开发六、函数的嵌套调用1. 概念在一个函数内部调用另外一个函数。2. 执行原理程序从上向下执行遇到函数调用跳转到被调用函数执行被调用函数全部执行完毕之后携带返回值回到调用位置继续向下执行原有函数剩余代码。3. JVM 栈内存简单理解JVM 虚拟机栈是 Java 函数执行的内存模型。每一个函数执行都会创建一块栈帧 (Stack Frame)。栈帧保存局部变量表、操作数栈、函数出口等信息。函数执行结束返回调用位置该函数对应的栈帧内存直接回收。七、递归递归概念函数的内部调用函数自身称为递归调用。⚠️无穷递归会抛出异常java.lang.StackOverflowError栈溢出。写递归一定要定义递归出口终止条件避免无限调用。案例阶乘计算。适用场景复杂问题可以拆解成若干相同逻辑的子问题。