函数
概念
是一段具有特定功能的代码, 特点为可以多次执行.通常情况下一个函数对应一个功能
语法
访问修饰符 static 返回值类型 函数名(形参列表){//操作语句 }
public static void 函数名(){}
位置
类以内,其他函数以外,与主函数平级
调用
自定义函数必须经过调用才有可能执行
函数名(实参列表) 函数名()
位置
只要在函数内,想在哪执行,就在哪调用
执行流程
函数
概念
是一段具有特定功能的代码, 特点为可以多次执行.通常情况下一个函数对应一个功能
语法
访问修饰符 static 返回值类型 函数名(形参列表){//操作语句 }
public static void 函数名(){}
位置
类以内,其他函数以外,与主函数平级
调用
自定义函数必须经过调用才有可能执行
函数名(实参列表) 函数名()
位置
只要在函数内,想在哪执行,就在哪调用
执行流程
参数
表示函数执行中不确定的内容,特点为值可变
形参
形式上的参数. 特点为只有声明部分没有具体值,写在函数声明处的小括号内
实参
实际上的参数. 特点为是一个具体值或拥有具体值结果的表达式,写在函数调用处的小括号内
一个参数
public static void 函数名(数据类型 参数名){} 调用:函数名(值|拥有结果的表达式)
执行流程
使用
-
有参数时,必须通过实参给形参赋值
多个参数
public static void 函数名(数据类型 参数名1,数据类型 参数名2,..){} 调用:函数名(值1,值2,..)
使用
实参列表与形参列表必须保持一致
-
参数列表: 个数 顺序 数据类型
public class Test1 {public static void main(String[] args) {//需求:输出一首打油诗,要求每行下方输出做分割System.out.println("太阳当空照");printLine(15,"-");//15 -System.out.println("花儿对我笑");printLine(20,"*");//20 *System.out.println("小鸟说早早早");printLine(25,"^");//25 ^System.out.println("你为什么背上java包");}
/*** 输出指定数量的分隔符 printLine(int,String)* @param num 数量* @param str 分隔符内容*/public static void printLine(int num,String str){//int num=15for (int i = 1; i <= num; i++) {System.out.print(str);}System.out.println();}
}
返回值
表示函数的执行结果
public static 返回值类型 函数名(形参列表){//操作语句return 值; }
return语句
-
作用: 向上返回 返回值
-
上:调用者
-
-
void表示无返回值
-
如果声明了返回值,则在函数内部必须通过return关键字将值向上返回
-
调用有返回值的函数时,必须对返回值做出处理
-
先定义变量接收返回值,其后再操作变量
数据类型 变量名=函数名(实参列表);
-
变量类型由函数声明处的返回值类型决定
-
-
直接操作函数调用结果
public static void main(String[] args) {//接收调用结果int sum=add(1, 2);System.out.println(sum % 2 == 0 ? "偶数" : "不是偶数");System.out.println(sum *10);//直接操作调用结果System.out.println(add(2, 4) % 2 == 0 ? "偶数" : "不是偶数");System.out.println(add(2, 4) *10);} //定义一个函数,传入整型参数a和b,计算参数之和. 要求在主函数中调用测试并判断和是否为偶数public static int add(int a,int b){//System.out.println(a+b);return a+b;}
-
-
必须保证每种分支情况都有可被执行的return语句
-
函数内存在分支时建议的书写套路:
-
在函数最上方定义用来返回的变量并赋初始值
-
在操作过程中根据情况更改变量的值
-
在函数最下方return该变量
-
-
执行流程:
-
同一作用范围内,return语句的下方不能存在其他有效语句
-
无法执行
-
-
扩展: 可以直接使用
return;
强制截止当前程序的执行
函数高级
函数的嵌套调用
-
嵌套调用时调用顺序与向上返回顺序相反
-
最先被调用的最后执行结束,最后调用的最先执行结束
JVM内存结构
-
栈的特点:永远操作栈顶元素. 存从栈顶存,取从栈顶取
-
每调用一次函数都会生成一条对应的栈帧, 函数的执行流程与栈的执行特点一致
掌握
-
函数的完整语法
-
形参和实参的区别
-
return的使用
-
参数列表都有哪些内容