欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的函数(方法)

程序员文章站 2024-03-17 08:10:16
...

 

今天我们来学习一下Java当中的函数,那么在学习之前我们首先要知道为什么我们要在Java中学习函数呢?

在知道为什么要学习函数之前,我们首先要知道的是Java中函数这个概念。

函数(方法):定义在类中的具有特定功能的一段独立小程序。函数也称之为方法。

在实际当中,我们总是会遇到一些重复性的问题,这个时候去重复的写这些代码,那么势必会造成代码冗余占用内存空间这个问题,而且写出来的代码也不美观简洁,所以这个时候我们就要引入函数来解决这个问题。这个时候有人可能就会问了,循环不是也可以解决代码重复这个问题吗?与循环不同的是,函数是一个独立的代码块,而它本身具备有一些独立的功能。

函数的基本格式为:

函数类型(权限) 返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2,)
           {   执行语句;
             return 返回值;
           } 

函数类型:比如public,private等。

返回值类型:函数运行后结果的数据类型。

函数名:使用者给函数自定义的名称,也就是标识符。
参数类型:形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:是具体的数据(常量、变量),在调用函数时,发送给函数体中的形式参数。

注意:在这里我们就可以说发送具体数值的一方就是实际参数,而接收数值的一方就是形式参数。


return:用于结束当前函数。

  • 返回值:就是指这段具有独立功能的代码快的计算结果,该值返回调用者。

注意:

函数中有无返回值需要通过void关键字来定义。

函数运算后,如果没有具体的返回值时,这时返回值类型用一个特殊的关键字来标识。
该关键字为void。void代表的是函数没有具体的返回值类型。
当函数的返回值类型为void时,函数中的return语句可以省略不写。
 

  • 函数的参数传递

在调用函数的时候,实际参数传递给了形式参数。

这里需要注意的是:参数传递的并不是具体的数值,本质上传送的是常量在常量池中的地址或者对象在堆内存中的地址。

  • 函数运行时的本质

函数运行的本质其实是基于栈内存的

栈是一个先进后出的容器结构。

我们可以将一个栈理解为一个弹夹,子弹按照123456的顺序进入弹夹,而按照654321的顺序被打出。

而在函数运行时,我们就可以将一个函数理解为一个子弹(函数帧/栈帧),位于栈顶的主函数肯定时第一个进栈的。

代码实现如下:

class Demo{   
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;
    }
}

我们可以通过一个动图来观察一下整个代码的运行流程:

Java中的函数(方法)

 

最后,一个小小的注意点 :

目前为止,定义函数的时候 ,只需要考虑返回值类型、函数名、参数列表、函数体、返回值 。
切记:千万不要在函数的内部创建函数,函数必须在类里面,函数们之间是平级关系。
        在C/C++/Python当中 函数的定义必须在函数调用之前;而在Java当中 随便,之前、之后都可以。