一、函数概述(函数又称为方法):
1、函数的作用: 提高功能代码的复用性。
2、举例:
class Demo1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println("sum="+(a+b));
a = 5;
b = 6;
System.out.println("sum="+(a+b));
}
}
1)分析:以上的代码都是在做一个加法功能,而这里加法功能的代码目前是没有任何的复用性的。
2)解决方案: 如果一个功能的代码要被复用起来,那么这时候可以把这里的功能代码封装起来,在java中把功能代码封装起来的是以函数的形式体现的。
class Demo1 {
public static void main(String[] args) {
int sum = add(2,3);
System.out.println(sum);
}
public static int add(int a,int b){
return a+b;
}
}
3)分析函数:
public static int add(int a,int b){
return a+b;
}
a)修饰符: public static
b)返回值类型: int 。 返回值类型就是指函数运行完毕后,返回的结果的数据类型。
注意: 某些函数是没有结果返回给调用者的,那么这时候返回值类型是void。
class Demo1 {
public static void main(String[] args) {
//(2,3)中的2,3为实际参数(实参)
add(2,3);
}
//(int a,int b)中的a,b为形式参数
public static void add(int a,int b){
System.out.println(a+b);
}
}
c)函数:
函数名: add
函数名的作用:如果需要调用该函数就需要使用的函数名。 函数名只要符合标识符的命名规则即可。
函数名的命名规范: 首单词全部小写,其他单词的首字母大写,其他字母小写。
d)形式参数:如果一个函数在运行的时候,存在着数据是要由调用者确定的,那么这时候就应该定义形式参数。
e)return : 把一个结果返回给调用者。
3、函数的定义格式:
修饰符 返回值类型 函数名(形式参数...){
需要被封装的功能代码;
return 结果;
}
4、如何定义一个函数:
1)返回值类型。
2)是否存在未知的参数(是否存在要由调用者确定的参数)。—->形式参数。
5、函数的特点:
1)函数的作用就是把一个功能代码给封装起来,已达到提高功能代码的复用性。
2)函数定义好之后是需要被调用才会执行的。main函数是有jvm调用的,不需要我们手动调用。
3)如果一个函数没有返回值返回给调用者,那么返回值类型必须是使用void表示。
二、return关键字:
1、看这样一个例子:
1)分析原因:如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意情况下都保证有返回值。(除了返回值类型是void以外)
2)修改后代码:
public static String getGrade(int score){
if(score>=90&&score<=100){
return "A等级";
}else if(score>=80&&score<=89){
return "B等级";
}else if(score>=70&&score<=79){
return "C等级";
}else if(score>=60&&score<=69){
return "D等级";
}else if(score>=0&&score<=59){
return "E等级";
//这样就满足了所有条件下都有返回值了
}else{
return "";
}
}
2、return 关键字的作用:
1) 返回数据给函数的调用者。
2)函数一旦执行到了return关键字,那么该函数马上结束。 (能结束一个函数)
3、注意:一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。
看到这里大家可能会有这样的一个想法,return和break貌似功能一样啊?
答:错,有本质区别。
4、break关键字与return关键字的区别:
1)break关键字是结束一个循环。
2)return关键字是结束一个函数。
这时候大家可能会想到并说,那return后面再接的语句不就是废话了吗?那不应该报错吗?
答:for循环中的i为变量,jvm不会识别for循环中的条件是否满足,所以不报错。
三、函数的重载:
1、定义:在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。
2、函数重载的作用: 实现同一个函数名可以对应不同的函数,以应对不同个数或者不同数据类型的参数。
class Demo1 {
public static void main(String[] args) {
add(1,2);
}
//这个不是函数的重载,而叫做函数重复
public static void add(int a , int b){
System.out.println("两个参数的总和: "+ (a+b));
}
public static void add(int a , int b){
System.out.println("两个参数的总和: "+ (a+b));
}
}
3、函数重载的要求:
1)函数名一致。
2)形参列表不一致。(形式参数的个数或者是对应的数据类型不一致)
3)与函数的返回值类型是无关的。