版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
一、函数的理解
这一篇,我们将要学习Java中特别重要的一部分 —— 函数(又称方法),那么,什么是函数呢?从开始学习java到现在,我们见的最多的就是它了吧:
public static void main(String[] args){
}
它的名字叫做main函数,也称为java程序的主函数,main虽然不是关键字,但它特别特殊,如果说一个程序是一间房子的话,那么main函数就是这间房子的门,是一个程序的入口,
那么,既然它叫函数,那么样式跟他类似的是否也叫函数呢?我们为什么要去创建函数呢?创建函数的时候需要考虑什么问题呢?带着这些问题,我们来认真学习一下函数吧。
二、函数
1、概念
为了提高代码的复用性,就把该功能封装成一段独立的小程序,当下次需要执行运算的时候,就可以直接调用这段小程序即可,那么这种封装形式的具体表现形式则称作函数
例如,我们可以将两个数相加封装成一个函数,当我们需要将两个数相加的时候直接调就可以了,代码如下:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int a = 4;
int b = 5;
int c = a+b;
System.out.println("c="+c);
int num = add(4,5);
System.out.println("num="+num);
}
public static int add(int a,int b){
return a+b;
}
}
运行结果:
我们可以看到,输出的结果是相同的,并且我们在多次我们需要将两个数相加的时候,就可以连续的调这个方法,就体现出了代码的复用性,减少了工作量。那么,函数应该以什么来写呢?请看下一部分:
2、创建函数
首先,我们在什么时候需要创建函数呢?这时候我们需要考虑两个问题:
- 是否有未知内容参与运算
- 是否有运算结果(返回值)
当我们确认需要创建一个函数的时候,一般来说,我们创建一个函数的格式是下面这样的:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数二...){
执行语句;
[return 返回值;]
}
注:
- 返回值类型: 运行这段程序得出的一个运算结果的结果类型,如果没有返回值则用函数表示这个函数没有返回值
- 函数名: 仅仅是一个标识符,命名时遵循驼峰命名规则即可
- 形式变量: 是一个变量,用于储存调用函数时传进来的实际参数
- 实际参数: 储存在形式参数里的具体数值
- 返回值: 返回给调用者的值
- static: 有的函数是有static的,有的则没有,怎么知道我们需不需要static呢?在后面的面向对象中会详细讲解的
3、函数的使用
有了这些基础之后,下面我们就来通过一个例子,详细的学习一下函数吧
例: 求两个数的最大值
就这一道题,我们来完整的进行一次函数从创建到使用的过程:
首先,我们得考虑一下上面的两个创建函数时需要考虑的问题:
1、是否有未知内容参与运算:我们需要求两个数的最大值,但是我们不知道这两个数是谁,可能是1和3,也可能是4和9,又可能是其他的。
2、是否有运算结果:求两个数的最大值,我们的结果即为这个最大值,并需要将它返回给调用者。
了解了需求之后,我们来创建函数,如下:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int max = getMax(2, 5);
System.out.println("max="+max);
}
public static int getMax(int a,int b){
if(a>b) {
return a;
}else {
return b;
}
}
}
解析getMax函数:
- 函数名为getMax,遵循驼峰命名规则
- 参数a,b;返回两个数中较大的一个
- public 和 static 是函数的修饰符
- 花括号{}内是方法的执行语句,也叫方法体
调用函数:
我们创建好函数后,需要在main函数里调用getMax()函数,2和5就是给该函数传递的实际参数,并且需要创建一个变量来接收函数的返回值,变脸类型必须和返回值类型一致,本例中通过int类型变量max来接收getMax()函数的返回值。
注意: main方法是程序的入口,由虚拟机调用,并且方法和方法之间不能嵌套,方法之间通过调用来使用
那么一个函数什么时候执行结束呢?
当执行完return语句,或者执行到方法末尾的花括号时方法结束。
4、函数的特点
1、特点:
(1)定义函数可以将功能代码进行封装
(2)便于对该功能进行复用
(3)函数只有在被调用时才会执行
(4)函数的出现提升了代码的复用性
(5)对于函数没有具体返回值的情况,返回值类型用void关键字表示
2、在编写函数时需注意:
(1)函数不调用不执行,换句话来说,函数之后再被调用后才会执行
(2)函数与函数之间是平级关系,不能嵌套定义;即不可在函数中再定义函数
(3)函数定义时参数之间需用逗号隔开
(4)函数调用的时候不用再传递数据类型
(5)如果函数有明确的返回值,一定要有return关键字带回一个返回值
(6)函数的结果应该交回调用者,由调用者进行处理
(7)return语句执行后,将终止函数的执行,即函数执行完成
5、函数的应用
函数可以应用在很多地方,现在我们来列举几个例子感受一下函数的应用:
例: 根据学生成绩划分成绩等级,80-100分为A,70-80分为B,60-70分为C,60分以下为D,建议参数类型为double。
首先,我们考虑一下参数(即学生成绩)传入函数后将要发生的情况,除了A,B,C,D四种情况外,应该还有一种情况,那就是当参数大于100或小于0是应提示输入错误,现在我们就来将它写出来吧,代码如下:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
double score = 120;
printGrade(score);
}
public static void printGrade(double score){
if(score>=90&&score<=100) {
System.out.println("该生成绩等级为A");
}else if(score>=70&&score<80){
System.out.println("该生成绩等级为B");
}else if(score>=60&&score<70) {
System.out.println("该生成绩等级为C");
}else if(score<60&&score>=0) {
System.out.println("该生成绩等级为D");
}else {
System.out.println("输入有误,请再次检查");
}
}
}
运行结果:
6、函数的重载
在一个类中,可以有一个以上的函数使用相同的函数名,但是这些函数的参数必须不同,或是参数类型不同,或是参数个数不同,这些方法称之为函数重载
例如: 需要打印不同类型的数据
public class Demo {
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args) {
int number1 = 1;
print(number1);
float number2 = 3.4f;
print(number2);
double number3 = 4.8;
print(number3);
}
public static void print(int a) {
System.out.println("int类型数:"+a);
}
public static void print(float a) {
System.out.println("float类型数:"+a);
}
public static void print(double a) {
System.out.println("double类型数:"+a);
}
}
判断两个函数是否重载,这和函数的返回类型无关,也和抛出的异常类型无关,只和函数的参数有关
好啦,今天的学习就到这里吧!记录学习,记录生活,我还是那个java界的小学生,一起努力吧!!
欢迎各位看官评论探讨哟 ~ ~ 小生在此谢过了 ~ ~