Java中的函数(方法)

今天我们来学习一下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;
    }
}

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

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

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

发布了7 篇原创文章 · 获赞 0 · 访问量 90

猜你喜欢

转载自blog.csdn.net/weixin_42668873/article/details/104263568