一:函数
- 函数就是方法,函数是具有功能的小程序(代码块)
- 函数可以被调用
- 函数的格式:修饰符 返回值类型 函数名(参数类型, 形式参数1,参数类型,形式参数2…)
{ 执行语句; return返回值;}
形如:public static int add(int a,int b){
System.out.println(“a+b”);
return a+b;
}
修饰符:public 等
返回值类型:功能结果的数据类型(如int ,double,boolean等)
方法名:顾名思义起了一个名字,方便我们调用该方法。
(采用驼峰命名xxxYyyZzz 形如: getName testAdd testSum)
参数类型:参数的数据类型(如int ,double,boolean等)
public static int getSumN(int count);
参数名:就是变量
参数分类:
实参:实际参与运算的数据
形参:方法上定义的,用于接收实际参数的变量
方法体语句:就是完成功能的代码块
return:结束函数(方法)
返回值:就是功能的结果,由return带给调用者。
- 没有具体返回值时,返回值类型用void表示
- 若返回值类型为void,那么函数中的return可以省略不写
- 函数的作用就是提高程序复用性和可读性
二:函数(方法)的实例
/*
1.需求一:定义一个功能,完成两个整数和的获取
2.思路:1)既然为定义一个功能,则需用函数体现。
2)明确功能的结果为啥?是和,该功能返回值为int
3)明确功能实现过程需要未知参与运算?要,加数与被加数。这就是参数列表(参数个数与参数的类型)
注意:返回值类型与参数类型没有直接关系
*/
public class TestFunction{
public static void main(String[] args){
int c=add(3,4);
System.out.println("c="+c);
}
public static int add(int a,int b){
return a+b;
}
}
/*
需求二:定义一个功能,画一个二矩形在控制台
思路:1)明确这功能有结果?没有,因为直接打印在控制台,并未返回调用者。用void
2)此功能需要位置内容参与运算?有,行和列不确定,两个整数int
需求三:定义一个函数功能,获取两个整数是否相等
思路: 明确功能的结果为啥?是否相等?Boolean类型
两个整数int
需求四:定义一个函数功能,获取两个整数中最大的数
思路:1)明确这功能有结果?有,是最大值,该功能返回值为int
2)明确功能实现过程需要未知参与运算?有,最大值与最小值,两个int
需求五:根据考试成绩获取学生分数对应的等级
90-100 A
80-89 B
70-79 C
60-69 D
60以下 E
*/
public class TestFuntion3{
public static void main(String[] args){
testAdd(5,6);
System.out.println("---------------");
testRectangle(9,8);
System.out.println("---------------");
System.out.println(" testEquals "+ testEquals(1,4));
System.out.println("----------------");
testMax(6,3);
System.out.println("---------------");
testGetLevel(86);
System.out.println("---------------");
}
public static int testAdd(int a ,int b){
int c=a+b;
System.out.println("c="+(a+b)+"\n"+"a="+a+"\n"+"b="+b);
return(c);
}
public static void testRectangle(int row ,int col){
for(int a=1;a<=row;a++){//行数
for(int b=1;b<=col;b++){//列数
System.out.print("*");
}
System.out.println();
}
}
public static boolean testEquals(int a,int b){
//return a==b;
if(a==b){
return true;
}
//return true;
//else 写不写都可以
return false;
/*
if(a==b)
returna==b?true:falsse;
*/
/*
boolean x;
if(a==b)
x=true;
else
x=falsw;
return x;
*/
}
public static int testMax(int a,int b){
if(a>b){
System.out.println("max="+a);
return a;
}
else {
System.out.println("max="+b);
return b;
}
//return a>b?a:b;
}
public static char testGetLevel(int num){
char level;
if(num>=90 && num<=100)
level='A';
else if(num>=80 && num<=89)
level='B';
else if(num>=70 && num<=79)
level='C';
else if(num>=60 && num<=69)
level='D';
else
level='E';
System.out.println("level="+level);
return level;
}
}
运行结果如下:
三:函数的重载
- 函数重载就是函数的重复调用
- 在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
- 函数重载与返回值没有关系
- 函数重载只与参数列表有关(参数类型, 参数个数, 参数顺序)
- 体感函数的利用率
- java编译是严谨的,若不确定函数返回值则会报错
函数重载的实例
/*
需求一:打印两整数的和
需求二:打印两小数的和
需求三:打印小数的和
需求四:打印三个整数的和
*/
public class TestFunctionDemo{
public static void main(String[] args){
add(9,8);
System.out.println("-----------");
add(9.0,8.0);
System.out.println("-----------");
add(9,8.0);
System.out.println("-----------");
add(9,8,9);
}
public static int add(int a,int b){
int c=a+b;
System.out.println(c);
return c;
//可以直接写return a+b;
}
public static double add(double a,double b){
double c=a+b;
System.out.println(c);
return c;
//可以直接写return a+b;
}
public static double add(int a,double b){
double c=a+b;
System.out.println(c);
return c;
//可以直接写return a+b;
}
public static int add(int a,int b,int c){
int d=a+b+c;
System.out.println(d);
return d;
//可以直接写return a+b+c;
//通过调用另一个重载函数实现重载 return add(a,b)+c;
}
}
运行结果: