函数和方法:函数到底是啥?

函数

我们经常使用函数,这引用,那调用,那到底函数是个什么东西呢?这个问题有没有人想过。

函数在Java的使用很频繁,函数的主要目的是为了提高程序的复用性和可读性。
函数是定义在类中的一段独立的代码块,用来实现某个功能。函数又被称为方法。
函数的主要作用是为了提高代码的复用性。
函数都是在栈内存中运行;运行的函数处在栈顶。

那什么是栈呢?

下面,是我找的一张关于栈的图
在这里插入图片描述
栈,学过或者了解过数据结构的都懂,它是一种运算受限的线性表。仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈我就先说到这

在Java中,函数又被称为方法
主函数的格式分析
修饰符:可以是访问修饰符,也可以说是函数修饰符,还可以是两者的组合。
返回值类型:用于限定函数返回值的数据类型。
参数类型:用于限定调用函数时传递的数据类型。
参数名:是一个变量,用来接收调用方法时传递的数据。
return:用来接收方法以及返回函数指定类型的值。
返回值:这个值会返回给函数的调用者。
具体使用如下:

	//这是函数的基本格式
    修饰符 返回值类型 函数名(形式参数类型1  参数名1......){
			函数体语句;
			return  返回值;
	}
	//例如:
	public static void main(String[] args){
		System.out.println();
	}

其中:
public为主函数是公开权限 最大权限
static为主函数是静态函数
void表示该函数没有返回值
main是主函数的名称
String[] String[] 表示的是一个字符串数组(数据类型)
args 就是这个数据类型的变量名称
(ps:我们可以在执行程序的时候 给主函数传递一些参数)
return:这时你会发现return不在 ,为什么呢?

因为函数没有返回值 所以return可以忽略不写 ,虽然他被忽略了,但这不代表不存在,return本身表示结束当前函数!如果函数有返回值 return 返回值; 必须写。

到我们目前为止,定义函数的时候,我们只需要考虑 返回值类型 函数名 参数列表 函数体 返回值
切记:千万不要在函数的内部创建函数 函数必须在类里面, 函数们之间是平级关系

在C/C++/Python当中 函数的定义必须在函数调用之前。
在Java当中 ,就没有这么多要求,你随便放在哪,不管是之前还是之后,都能调用

函数的参数传递

函数的参数传递只能由实参传给形参:
形式参数:函数定义时的参数为形式参数------>简称形参
实际参数:函数调用时的参数为实际参数 ------>简称实参



方法

方法的定义由方法名称、参数、返回值类型以及方法体组成。
当程序调用一个方法时,程序控制就转移到被调用的方法。当执行完 return 语句或执行到表示方法结束的右括号时,被调用的方法将程序控制返还给调用者。
每当调用一个方法时,系统会创建一个活动记录(也称为活动框架),用于保存方法中 的参数和变量。活动记录置于一个内存区域中,称为调用堆栈(call stack)。调用堆栈也称 为执行堆栈、运行时堆栈,或者一个机器堆栈,常简称为 “堆栈”。当一个方法调用另一个 方法时,调用者的活动记录保持不动,一个新的活动记录被创建用于被调用的新方法。 T-个方法结束返回到调用者时 ,其相应的活动记录也被释放。

具体情况由下面这个图,讲解给大家:
先给大家看一段代码:

class Test01{
 	 /*
    这个题是算a的b次方
	*/
    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;
    }
 }

在这里插入图片描述

这个程序,先进主函数,主函数先进栈底;
之后在主函数里定义两个数值,并赋值,4就进了右边的常量池。
接者pow方法也进栈
并调用常量池中的4的地址
接着进行运算,得到sum值
并把256 储存在常量池中
伴随着return,pow方法出栈
接着在主函数的c调用256
就进行输出
输出完后,相对于着,主函数也出栈,程序结束

可能这个图放的有点快影响观看,没办法,技术不够,毕竟都是刚学,轻批。

这是我今天的分享,谢谢大家的阅读,希望能对你有所帮助。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值