Chp5-函数

目录

概念

语法

位置

调用

位置

执行

参数

形参

实参

关系

一个参数

使用

多个参数

返回值

return

函数高级

函数的嵌套调用

JVM内存结构


概念

内部存放一段功能代码,作用为可以在不同位置多次执行,通常用来处理功能代码间的冗余问题

一个函数代表了一个功能

语法

完整版:
   访问修饰符 static 返回值类型 函数名(形参列表){
    //操作语句
    }
public static void 函数名(){
   //操作语句
}

void : 表示没有返回值

位置

类以内,其他方法以外,与主函数平级

调用

函数想要执行,必须经过调用

函数名(实参列表)
函数名()

位置

想在哪执行,就在哪调用

执行

只有当被调用函数执行结束回到调用位置之后,程序才能继续向下执行

参数

函数执行过程中不确定的数据

形参

形式上的参数。特点为没有具体值,只有声明部分,写在函数声明处的小括号内

实参

实际上的参数。特点为是一个具体值或拥有具体值结果的表达式,写在函数调用处的小括号内

关系

实参用来给形参赋值

一个参数

public static void 函数名(数据类型 形参名){
   
}
函数名(值|拥有结果的表达式)
使用
  1. 当声明的有形参时,调用函数时必须给予对应实参

  2. 执行流程:

  3. 参数列表:数据类型、个数、顺序

多个参数

public static void 函数名(数据类型 形参名1,数据类型 形参名2,..){
   
}
函数名(值|拥有结果的表达式1,值|拥有结果的表达式2,..)
package com.by.test;
​
public class Test1 {
    public static void main(String[] args) {
        //输出一首诗,每句下方输出-作为分割
        System.out.println("鹅鹅鹅");
        //调用函数输出  10 -
        printLine(10,"-");
        System.out.println("曲项向天歌");
        printLine(15,"*"); // 15 *
        System.out.println("白毛浮绿水");
        printLine(20,"+"); // 20 +
        System.out.println("红掌拨清波");
    }
    //自定义函数:输出-
    public static void printLine(int num,String str){
        for (int i = 1; i <= num ; i++) {
            System.out.print(str);
        }
        System.out.println();
    }
​
}
  • 当参数有多个时,必须保证实参列表与形参列表保持一致

返回值

  • 值:函数的执行结果

  • 返回:操作,将值给到调用者

public static 返回值类型 函数名(参数列表){
   //操作语句
   return 值;
}

return

  1. 作用:结束当前函数的执行,将值向上返回给调用者

    • 向上:向调用者

  2. return的值类型必须与函数声明的返回值类型一致

  3. 函数定义者和函数调用者不可同时操作返回值(不合理)

  4. 当调用者调用了有返回值的函数时,必须对返回值做出处理,否则会导致值无效

    1. 先接收,再处理(推荐)

      • 先定义变量接收返回值,变量类型必须与函数声明保持一致

      • 再操作变量

    2. 直接处理

        public static void main(String[] args) {
            //定义变量接收返回值
            int sum=method(100);
            System.out.println(sum % 2 == 0 ? "偶数" : "奇数");
            System.out.println(sum*10);
            //直接处理
            System.out.println(method(200) % 2 == 0 ? "偶数" : "奇数");
        }
        //定义一个函数,传入整型参数n,计算1-n的和并返回。调用测试,并判断和是否为偶数
        public static int method(int n){
            int sum = 0;
            for (int i = 1; i <= n; i++) {
                sum += i;
            }
            //System.out.println(sum);//method自己处理sum
            return sum;//将sum向上返回交给调用者处理
        }
  5. 执行流程:

    • 当执行到return语句,表示函数运行结束,开始向上返回

  6. return语句直属作用范围内下方不可存在其他有效语句

    • 无法执行

  7. 当函数中存在分支时,必须保证每个分支都有可执行的return语句

  8. 当函数有返回值时,'三部曲'的处理方式:

    1. 在函数的最上方定义用来返回的变量,并赋予初始值

    2. 书写操作语句,根据不同情况给变量重新赋值

    3. 在函数的最下方return返回该变量

函数高级

函数的嵌套调用

  1. 嵌套执行时,调用顺序与执行结束的顺序相反

  2. 只要逻辑完整,对嵌套层数不做要求

  3. 递归调用:(了解)

    • 多个函数之间循环调用

    • 自己调用自己

    • 所有的递归都可以使用循环代替

JVM内存结构

  • 栈的特点:先进后出(FILO),只能操作栈顶元素

  • 函数执行与栈的关系:每次函数的调用都会生成一条对应的栈帧,栈的执行是先进后出,所以函数的嵌套调用也是如此

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值