JAVA之——函数

首先我们先来看一段代码
假如需要分别求出从1到 10、从 20 到 37以及从35到 49的整数和,可以编写如下代码

for (int i= 1; 1 <= 10; i++)
sum += i;
System.out.println("Sum from 1 to 10 is " + sum);
sum =0;
for (1nt i=20; i <=37; i++)
sum +=i;
System.out.println("Suw from 20 to 37 is " + sum);
sum = 0;
for (Int i= 35; i <= 49; i++)
sum += i;
System.out.println("Sum from 35 to 49 is M" + sum);

你会发现计算从1到 10、从 20 到 37以及从 3S 到 49的整数和,除了开始的数和结尾的数不同之外,其他都是非常类似的。如果可以一次性地编写好通用的代码而无须重新编写,难道不是更好吗?可以通过函数方法实现该功能。
具体实现如下:

public static int sum(int i1, int i2) { 
 int result = 0; 
 for (int i=i1;i<=i2;i++) 
 result += i;
  return result;
  }
public static void main(String[] args){
  System.out. println("Sum from 1 to 10 is " + sum(l, 10)) ;
  System.out. println("Sum from 1 to 10 is " + sum(20, 37)) ;
  System.out. println("Sum from 1 to 10 is " + sum(35, 49)) ;

定义一个名为 sum 的方法,该方法带有两个参数 i1和 i2,main 方法中的语句调用 sum(1,10)计算从1到 10的整数和,sum(20,37)计算从 20 到 37 的整数和,而sum(35,49)计算从 35 到 49 的整数和。

其实上面说的函数存在的意义,函数主要解决的是一些重复的且具有独立功能的代码段,将这些具有独立功能的代码段重新进行封装,封装出来的就称为是函数,函数的出现,降低了代码冗余(复用函数即可解决),降低了主函数的代码量(将主函数进行适当的拆分,以便内存优化),就是将函数模块化
例如上面所写的,我们可以将第一次的代码拆分成两段,就是第二次的代码,这样就降低了主函数的代码量。

那么函数的格式是什么呢?
访问权限 返回值类型 函数名(函数列表)
{
函数体;
return返回值
}
**

public static void 函数名() { // (遵循标识符命名规范)
	// 函数体,功能代码
}
  • 访问权限:指的就是函数的使用范围(内部和外部)[public(公共的) protected(受保护) 默认 private(私有)]
  • 函数类型:指的就是函数类型分类 [static(静态)、默认(成员函数)、abstract(抽象函数)、native(本地函数)、synchronized(同步函数)]
  • 函数名:程序员给代码自定义的名称(标识符)
  • 参数列表:由若干个参数类型,参数名组成(只要用于接收外界传递给函数的一些数据)
  • 函数体:具有独立功能的代码段/块
  • return:仅仅表示结束当前函数,如果有返回值,则函数结束前将返回值返回给调用者
  • 返回值:指函数体的计算结果,需要传递给外界,配合return使用
  • 返回值类型:返回值数据类型(可兼容即可)
    在这里插入图片描述
    函数传参(形参与实参)
    实际参数(实参):就是在调用函数的时候,给函数传递的数据(常量,变量)
    例如第二次代码中的(1,10) (20, 37) (35, 49)
    “实参”等价于“局部变量的赋值”
    形式参数(形参):定义函数的时候,参数列表中的数据。
    例如代码中的(int i1, int i2)
    目前为止,实参将常量的地址传递给形参
    局部变量:但凡在函数中创建的变量,我们称之为局部变量,局部变量的作用域仅仅在当前函数当中

传参过程如下所示:
在这里插入图片描述
在函数调用其他函数时,等到其他函数运行完毕后主函数接着运行,这就是就引出了函数栈。
函数栈:函数的运行时基于栈运行的。栈是一个先进后出的容器结构,比如我们买的筒装薯片,它在装的时候第一片薯片先进去,在我们手里就是第一片薯片最后拿出来吃,薯片按照123456的顺序进入,按照654321的顺序出来。
可以将每一个函数理解为是薯片(函数帧),位于栈顶的函数帧优先运行的,主函数绝对是第一个进栈的。return结束当前函数 -> 当前函数栈。

函数的重载
函数的重载指的就是同一个类中出现的同名函数,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
重载的特点:与权限没关系,与返回值类型没关系,与参数名没关系只有和参数类型的排列组合有关系(注意一下参数类型的向下兼容问题)
重载的好处:重载的好处就在于我们可以扩展函数的功能(函数重名,但是参数类型不一样,执行内容也可以不一样),方便阅读优化了程序设计

判断下面所列举的函数是否与public static void print(int n,char c,double num){} 重载
1、public static void print(int x,char ch,double do){} //没有重载,因为参数类型一样
2、public static void print(double d,char c,int n){} //重载了,因为参数类型不一样
3、public static int print(char c,int a){} //重载了,因为参数类型不一样
4、public static int print(int a,char c,double d){} //没有重载,因为重载和返回值类型没有关系
5、public static void print(int a,char c){} //重载了,因为参数类型不一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值