第四章--函数

本文详细介绍了Java函数的定义,包括访问权限、函数类型、返回值类型等关键要素。讨论了函数的分类,如有返回值、无返回值,有参数、无参数的情况。还重点解析了函数参数传递的原理,指出实参传递的是常量的地址或对象的地址。最后,探讨了函数栈的概念,用生动的动画展示了函数的执行过程。
摘要由CSDN通过智能技术生成

一、函数的定义

函数主要解决的是那些重复的且具有独立功能的代码段

函数存在的意义---将函数模块化

  • 将这些具有独立功能的代码进行再次封装 得到的东西就是函数
  • 一个很明显的优势,就是降低了代码冗余复用函数即可,其次是降低了主函数的代码量,将主函数进行适当的拆分,以便内存优化。

函数如何定义的呢?

访问权限 函数类型 返回值类型 函数名(参数列表) {

        函数体

        return 返回值;

}

  1. 访问权限:指的就是函数的使用范围(内部和外部)public  protected  默认  private

    2.  函数类型:指的是函数类型分类 

static(静态函数)  默认(成员函数)  abstract(抽象函数)  native(本地函数)  synchronized(同步函数)

    3.  函数名:程序员给这一段代码自定义的名称(标识符)

    4.  参数列表:由若干个(参数类型 参数名)组成,主要用于接收外界传递给函数的一些数据

    5.  函数体:是具有独立功能的代码块

    6.  return:仅仅表示结束当前函数,如果有返回值,则函数结束前将返回值返回给调用者

    7.  返回值:指的就是这一具有独立功能的代码块的计算结果,需要传递给外界,配合return使用

    8.  返回值类型:就是返回值的数据类型(可兼容)

接下来我们来分析一下主函数的格式:

 public 主函数是公开权限 最大权限

 static 主函数是静态函数

 void   该函数没有返回值

 main   主函数的名称

 String[] String[] 表示的是一个字符串数组(数据类型)

 args 就是这个数据类型的变量名称

 return:如果发现return不在 

        那是因为函数没有返回值 所以return可以忽略不写 不代表不存在

        return本身表示结束当前函数!

        如果函数有返回值 return 返回值; 必须写

     定义函数的时候 只需要考虑 返回值类型 函数名 参数列表 函数体 返回值 

     切记:千万不要在函数的内部创建函数 函数必须在类里面 函数们之间是平级关系

     在C/C++/Python当中 函数的定义必须在函数调用之前

     在Java当中 不限制 之前或之后

    我们来看一个例子:

class Test01{
    
    public static void main(String[] args){
        int a=4;
        int b=4;
        double c=pow(a,b);
        System.out.println(c);
    }
    public static double pow(double a,int b){
        if(b==0){
            return 1;
        }
        double sum=1;
        //2^4
        for(int i=1;i<=Math.abs(b);i++){
            sum*=a;
        }
        return b>0?sum:1/sum;
    }
    public static void show(){
        System.out.println("哈哈~~");
    }
    
}

二、函数的分类

  • 有返回值有参数
  • 有返回值无参数
  • 无返回值有参数
  • 无返回值无参数

注意:有返回值的函数,参与运算、输出、赋值

           无返回值的函数,仅仅调用,并不会对返回结果进行其他操作

三、函数传参

  • 实际参数--实参  -->就是在调用函数的时候,给函数传递的数据(常量、变量)
  • 形式参数--形参  -->定义函数的时候,参数列表当中的数据

实参是将什么传递给了形参呢---常量在常量池中的地址

                                               ---对象在堆内存中的地址

但凡是在函数中创建的变量,称为局部变量。局部变量的作用域仅仅是在当前的函数中

那我用一张图给大家解释一下:

四、函数栈

    函数的运行是基于栈运行的  

栈,是一个先进后出的容器结构      一段数字按123456的顺序进栈,出栈的顺序就为654321

可以将每一个函数理解为是子弹(函数帧),位于栈顶的函数帧优先运行,主函数是第一个进栈的

 接下来我们来看一段代码

class Test01{
    
    public static void main(String[] args){
        int a=4;
        int b=4;
        double c=pow(a,b);
        System.out.println(c);
    }
    public static double pow(double a,int b){
        if(b==0){
            return 1;
        }
        double sum=1;
        for(int i=1;i<=Math.abs(b);i++){
            sum*=a;
        }
        return b>0?sum:1/sum;
    }  
}

我用动画给大家演示一下:

 

 

希望这篇文章对你有用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值