欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数(方法)以及方法(函数)的重载

程序员文章站 2022-04-06 14:34:32
...

一.函数

1.函数的定义:

如果一个功能的代码被复用起来,那么这时候可以把这里的功能代码封装起来,当下次要执行这个功能时,直接调用封装起来的代码,在Java中把功能代码封装起来是以函数的形式体现的。函数也叫方法

2.举例:

case1:在现实生活中,以前去银行取钱的时候,银行都会有专门的工作人员负责,但是银行发现取钱的步骤都是一致的,后来银行为了解决这个问题,就把取钱的功能封装到一个柜员机中,以后我们再取钱的时候,只需要调用柜员机的取钱功能即可。

case2:地铁自动售票机,接收纸币或硬币,返回车票,该售票机具有独立功能,可以理解为函数。有未知内容参与运算(要投币,纸币还是硬币,要投多少钱),也有返回值(返回车票)。

case3:手机具备打电话的功能,有未知的内容(电话号码),键盘是(形参),输入的号码是实际参数。

3.函数的作用:

提高功能代码的复用性

4.函数的定义格式:

修饰符  返回值类型  函数名(参数类型 形式参数1,参数类型 形式参数2,……){
	需要被封装的功能代码(执行语句);
	return 结果(返回值);
}

(1)返回值类型:

返回值类型就是指函数运行完毕后,返回的结果的数据类型。

注意:某些函数是没有结果返回给调用者的,那么这时候返回值类型就是void

(2)函数名:

函数名的作用:如果需要调用该函数就需要使用的函数名,函数名只要符合标识符的命名规则即可。

函数名的命名规范:首单词全部小写,其他单词的首字母大写,其他小写

(3)形式参数:

如果一个函数在运行的时候,存在着数据是要调用者确定的,那么这时候就应该定义形式参数。

形式参数可以理解为一个局部变量,用于存储调用函数传递进来的实际参数。

(4)返回值return:

把一个结果返回给调用者。

5.如何定义一个函数:

(1)是否有未知参数参与运算(是否存在要由调用者确定的参数)——>形式参数。

(2)是否有返回值以及返回值的类型。

6.函数调用:

要想使用方法,就必须调用它。

7.函数的特点:

(1)函数的作用就是把一个功能代码给封装起来,以达到提高功能代码的复用性

(2)函数定义好之后,是需要被调用才会执行的。

注意:main函数是由JVM调用的,不需要我们手动调用。

(3)如果一个函数没有返回值返回给调用者,那么返回值类型必须是使用void表示。

8.函数中需要注意的事项:

(1)函数中只能调用函数,不可以在函数内部定义函数。因为函数之间是平级的,相互之间是调用关系。

(2)定义函数时,函数的结果应该返回给调用者,交由调用者处理。

(3)当函数的返回值类型是void时,函数中的return语句可以省略不写

(4)下图是函数的错误写法

函数(方法)以及方法(函数)的重载

9.实例:

(1)实例一:

需求:定义一个函数比较两个int类型的数据大小,把最大值返回给调用者。

分析:要比较的这两个数并没有确定,要把这两个数写在形参列表上。也有返回值。

class Demo1{
	public static void main(String[] args){
		int max = getMax(3,4);	//调用了函数,传递实际参数
		System.out.println("最大值是:"+max);	
	}

	public static int getMax(int a,int b){
		int max = 0;	//定义一个变量用于保存最大值
		if(a > b){
			max = a;
		}else{
			max = b;
		}
		return max;	//把结果返回给调用者
	}
}

运行结果如下图所示:

函数(方法)以及方法(函数)的重载

(2)实例二:

需求:定义一个函数比较两个int类型数据的大小,不需要把最大值返回给调用者,直接打印即可。

分析:此时仍然有两个未知的数据进行比较,但是没有返回值

class Demo2{
	public static void main(String[] args){
		getMax(3,5);	//调用了函数,传递实际参数
	}

	public static void getMax(int a,int b){
		int max = 0;	//定义一个变量用于保存最大值
		if(a > b){
			max = a;
		}else{
			max = b;
		}
		System.out.println("最大值是:"+max);	
	}
}

运行结果如下图所示:
函数(方法)以及方法(函数)的重载

(3)实例三:

需求:定义一个函数判断一个分数的等级,把分数的等级返回给调用者。

分析:未知的参数——>形式参数:分数;       返回值类型:String。

class Demo3{
	public static void main(String[] args){
		String result = getGrade(78);//方法有返回值可以定义一个变量接收返回值。变量类型和返 						//回值类型要一致
		System.out.println("您分数的等级是:"+result);	
	}
	public static String getGrade(int score){
		String grade = "";	//定义一个变量存储等级
		if(score >= 90 && score <= 100){
			grade = "A等级";
		}else if(score >= 80 && score <= 89){
			grade = "B等级";
		}else if(score >= 70 && score <= 79){
			grade = "C等级";
		}else if(score >= 60 && score <= 69){
			grade = "D等级";
		}else{
			grade = "补考";
		}
		return grade;	//把等级返回给调用者
	}
}

运行结果如下图所示:

函数(方法)以及方法(函数)的重载

注意:当执行完return语句时,或者执行到方法末尾的方括号时该方法结束。

二.return关键字

1.return关键字的作用:

(1)返回数据给函数的调用者。

(2)函数一旦执行到了return关键字,那么该函数马上结束(能结束一个函数)。

2.注意事项:

(1)一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。

(2)如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意的情况下都有返回值(除了返回值类型是void以外)。比如下面中的分数,如果分数不在0-100的范围以内,应该也有一个返回值。返回值是您输入的分数有误。如果不加else会报错,因为并没有保证在任何情况下都有返回值。

class Demo3{
	public static void main(String[] args){
		String result = getGrade(78);
		System.out.println("您分数的等级是:"+result);	
	}
	public static String getGrade(int score){
		String grade = "";	//定义一个变量存储等级
		if(score >= 90 && score <= 100){
			grade = "A等级";
		}else if(score >= 80 && score <= 89){
			grade = "B等级";
		}else if(score >= 70 && score <= 79){
			grade = "C等级";
		}else if(score >= 60 && score <= 69){
			grade = "D等级";
		}else if(score >= 0 && score <= 59){
			grade = "补考";
		}else{	//如果不加else会报错,因为并没有保证在任何情况下都有返回值。
			grade = "您输入的分数有误";
		}
		return grade;	//把等级返回给调用者
	}
}

3.break关键字与return关键字的区别:

(1)break关键字是结束一个循环

(2)return关键字是结束一个函数

class Demo4 {
	public static void main(String[] args){
		System.out.println("——————break结束一个循环——————");
		print1();
		System.out.println("——————return结束一个函数——————");
		print2();
	}
	public static void print1(){
		for(int i = 0;i < 5;i++){
			System.out.println("Hello Java");
			break;
		}
		System.out.println("我能执行吗?");//break结束循环后仍然可以执行
	}
	public static void print2(){
		for(int i = 0;i < 5;i++){
			System.out.println("Hello Java");
			return;
		}
		System.out.println("我能执行吗?");//return结束函数后不会执行
	}
}

运行结果如下图所示:
函数(方法)以及方法(函数)的重载

三.函数的重载

1.函数重载的定义:

函数的重载也叫方法的重载,在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。

2.函数重载存在的原因:

为了增强方法的阅读性,优化了程序设计。

3.函数重载的作用:

同一个函数名可以出现不同的函数,以应对不同个数或者不同数据类型的参数。

4.函数重载的要求:

(1)函数名一致

(2)形参列表不一致。(形式参数的个数或者是对应的数据类型不一致)

(3)与函数的返回值类型是无关的

5.实例:

class Demo5{
	public static void main(String[] args){
		add(1,2);
		add(1,2.0);
		add(1,2,3);
		add(1,2,3,4);	
	}	
	public static double add(int a,int b){
		System.out.println("两个参数的总和:"+(a+b));
		return 3.14;
	}
	public static int add(int a,double b){
		System.out.println("double参数的总和:"+(a+b));
		return 12;
	}
	public static void add(int a,int b,int c){
		System.out.println("三个参数的总和:"+(a+b+c));
	}
	public static void add(int a,int b,int c,int d){
		System.out.println("四个参数的总和:"+(a+b+c+d));
	}
	
}

运行结果如下图所示:

函数(方法)以及方法(函数)的重载