第四章--函数

一、函数的定义

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

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

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

函数如何定义的呢?

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

        函数体

        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;
    }  
}

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

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

发布了9 篇原创文章 · 获赞 0 · 访问量 221

猜你喜欢

转载自blog.csdn.net/qq_43410906/article/details/104259150