Day4-函数

目录

概念

语法

位置

调用

参数

一个参数

多个参数

返回值

return关键字

总结

函数高级


概念

是对重复出现代码的提取,是一段可以重复使用的代码,用于进行多次调用

语法

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

位置

写在类的内部,其他函数的外部,函数和函数之间不可嵌套定义

调用

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

语法

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

位置

在哪里执行,就在哪里调用

  • 程序必然是在主函数中从上往下执行

  • 只有当被调用函数执行完毕,调用者本行代码才有可能执行完毕

参数

当函数中存在不确定的因素时,则需要将该因素定义为参数

一个参数

public static void 函数名(数据类型 参数名){
    //操作语句
}

形参

形式上的参数,特点为没有具体值,只有定义部分,写在函数的语法定义之中

实参

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

使用

  1. 当函数定义有形参时,在进行函数调用时必须为形参传入对应数据类型的实参

  2. 执行流程

  • 当调用者进入一个有参的函数时,第一步为用实参对形参进行赋值

多个参数

public static void 函数名(数据类型 参数名1,数据类型 参数名2){
    //操作语句
}

使用

  1. 多个参数时,实参的数据类型、个数、顺序必须跟形参定义保持一致

class Day5{
    
    public static void main(String [] args){
        //输出一首打油诗,要求:每行输出结束之后打印20个-
        System.out.println("太阳当空照");
        //调用函数打印指定个数的-
        getLine(20,"-");
        
        System.out.println("花儿对我笑");
        //调用函数打印指定个数的*
        getLine(30,"*");
        
        System.out.println("小鸟说早早早");
        getLine(40,"^");
        
        System.out.println("你为什么背上java包");
        getLine(50,".");
        
    }
    //定义一个函数,打印-
    public static void getLine(int num,String str){
        for(int i=1;i<=num;i++){
            System.out.print(str);
        }
        System.out.println();
    }
}

返回值

函数的执行结果

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

return关键字

用于返回函数执行结果

  • 如果函数没有返回值,则定义为void

  • 当函数定义存在返回值时,必须通过return关键字进行值的返回

  • 通常情况下,return语句存在于函数最下方,如果函数中存在分支,则每种分支情况都需要有对应的return结果

  • 当函数存在返回值时,调用者必须对函数的返回结果进行处理

    • 第一种处理方式:定义变量接收结果,变量类型必须跟函数定义的返回值类型保持一致

      public static void main(String [] args){        
              int sum=getSum(1,2);//接收函数调用结果
              System.out.println(sum);
      }
          //定义一个函数,传入整形参数n和m,计算n和m的和并返回
          public static  int  getSum(int n,int m){
              int sum=n+m;
              return sum;//return n+m;
          }
    • 第二种处理方式:直接对函数的返回结果进行操作

      System.out.println(getSum(2,3));//直接输出函数调用结果
  • 一个函数的返回结果可以作为其他函数的实参

  • 一个函数只能执行一个return语句

  • 当函数有返回值时,代码逻辑:(建议)

    1. 在函数最上方定义用于返回的变量,并设置初始值,变量类型与返回值类型一致

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

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

//定义一个函数,传入整形参数n,判断n是否为偶数并返回,在主函数中测试调用 
    public static boolean getNumber2(int n){
        //1.定义用于返回的变量
        boolean boo=false;
        //2. 书写操作语句,根据不同情况为变量进行赋值
        if(n%2==0){
            boo=true;
        }
        //3. return返回该变量
        return boo;
    }

扩展补充:

return 返回值;用来返回函数的返回值结果

return;可以用来终止程序执行

  • 注意:下方不允许存在其他有效语句

总结

  1. 函数其实就是提炼一段具有特定功能的代码,特点为可以反复多次调用执行

  2. 参数其实就是功能代码中不确定的因素

  3. 返回值其实就是功能代码的执行结果

函数高级

函数的嵌套调用

只要逻辑完整,嵌套层数没有要求

  • 当进行函数嵌套调用时,最先执行结束的是最后调用的函数

  • 当进行函数嵌套调用时,返回顺序为自下而上,由内往外

JVM内存结构(了解)

  1. 栈的特点:只能操作栈顶元素,入栈是存放在最顶部,出栈出的也是最顶部元素

    • 先入后出

  2. 栈帧:是栈的基本组成元素

    • 每当调用一个函数,都会生成一个栈帧,栈帧中存放着函数的所有信息(局部变量、操作语句、返回值等)

递归

自己调用自己

  • 注意:能用递归实现的内容都可以用循环替代

  • 一定要存在最终返回的情况,如果没有,则程序会陷入无限自调用,直到栈帧把内存撑满,程序才会强制停止

    //计算某个数字的阶乘并返回
    public static int getNumber(int n){//n=5
        if(n==1){//当n为1时,证明阶乘计算已经到达底层
            return 1;//返回当前1的阶乘值
        }
        
        return n*getNumber(n-1);
        /*
        1. 5*4*3*2*1
        2. n=4
           4*3*2*1
        3. n=3
           3*2*1
        4. n=2
           2*1
        5. n=1
          1
        */
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木泽锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值