#大数据学习笔记第5天# 函数

## 回顾

## 大纲
– 方法的定义
– 方法的特点
– 方法的应用
– 方法的重载

## 方法的定义
什么是方法?

– 方法就是定义在类中的,具有特定功能的一段小程序;
– 方法也称为函数;
– 方法可以接收输入,根据需要输出内容;

方法定义的格式:

Select Code
1
2
3
4
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ...){
	方法体语句;
	return [返回值];
}
  • 修饰符:暂时固定写成public static
  • 返回值类型:方法执行后返回结果的数据类型
  • 形式参数列表:
    • 参数类型:是形式参数的数据类型;
    • 形式参数:是一个变量,用于接收方法被调用时传给方法的实际参数的值
    • 实际参数:放大调用时传递给形式参数的具体数值
  • return:关键字,用于表示方法结束
  • 返回值:该方法运算后需要返回给调用者的结果,其类型要和返回值类型匹配,或者可以自动转型

## 方法的特点:
– 定义方法可以将功能代码进行封装;
– 提高了代码的复用性;
– 方法只有被调用才会被执行;
– 注意:方法之间是调用关系,不可以在方法内部再定义方法;

## 方法练习:
1. 定义方法,用于计算两个double整型的和;
2. 定义方法,用于打印九九乘法表;
3. 定义方法,用于打印任何行数和列数的“+”号;
4. 定义方法,用于判断一个int数是否是偶数;
5. 定义方法,接收一个int值,返回该值对应的应该是星期几,要求switch结构实现;
6. 定义方法,获取两个数中的最大值;
7. 定义方法,获取三个数中的最大值;

### 答案
题1:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
/*
	定义方法,用于计算两个double整型的和;
*/
public class Demo01{
	public static void main(String[] args){
		System.out.println(add(1.0,2.0));	//3.0
	}
	
	public static double add(double d1, double d2){
		return d1+d2;
	}
}

题2:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
	定义方法,用于打印九九乘法表;
*/
public class Demo02{
	public static void main(String[] args){
		chenfabiao();
	}
	
	public static void chenfabiao(){
		for(int i=1; i<=9; i++){
			for(int j=1; j<=i; j++){
				System.out.print(i+"*"+j+"="+(i * j)+"\t");
			}
			System.out.println();
		}
	}
}

打印效果如图:

题3:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
/*
	定义方法,用于打印任何行数和列数的“+”号;
*/
public class Demo03{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入行数:");
		int line = s.nextInt();
		System.out.println("请输入列数:");
		int col = s.nextInt();
		print_plus(line,col);
	}
	
	public static void print_plus(int line, int col){
		for(int i=1; i<=line; i++){
			for(int j=1; j<=col; j++){
				System.out.print("+");
			}
			System.out.println();
		}
	}
}

打印效果如图:

题4:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;
/*
	定义方法,用于判断一个int数是否是偶数;
*/
public class Demo04{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个int整数:");
		int num = s.nextInt();
		if(is_even(num)){
			System.out.println("这是一个偶数");
		}else{
			System.out.println("这是一个奇数");
		}
	}
	
	public static boolean is_even(int num){
		if(num % 2 == 0){
			return true;
		} else {
			return false;
		}
	}
}

打印效果如图:

题5:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Scanner;
/*
	定义方法,接收一个int值,返回该值对应的应该是星期几,要求switch结构实现;
*/
public class Demo05{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个1-7范围内的整数:");
		int num = s.nextInt();
		System.out.print("这表示:" + week_day(num));
	}
	
	public static String week_day(int num){
		String s="";
		switch(num){
			case 1:
				s = "星期一";
				break;
			case 2:
				s = "星期二";
				break;
			case 3:
				s = "星期三";
				break;
			case 4:
				s = "星期四";
				break;
			case 5:
				s = "星期五";
				break;
			case 6:
				s = "星期六";
				break;
			case 7:
				s = "星期日";
				break;
			default:
				s = "非法值";
		}
		return s;
	}
}

打印效果如图:

题6:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
/*
	定义方法,获取两个数中的最大值;
*/
public class Demo06{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入第一个整数:");
		int num1 = s.nextInt();
		System.out.println("请输入第二个整数:");
		int num2 = s.nextInt();
		System.out.println("比较大的整数是:" + max(num1, num2));
	}
	
	public static int max(int num1, int num2){
		if(num1 >= num2){
			return num1;
		}else{
			return num2;
		}
	}
}

打印效果如图:

题7:

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
/*
	定义方法,获取三个数中的最大值;
*/
public class Demo07{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入第一个小数:");
		Double num1 = s.nextDouble();
		System.out.println("请输入第二个小数:");
		Double num2 = s.nextDouble();
		System.out.println("请输入第三个小数:");
		Double num3 = s.nextDouble();
		System.out.println("三个数中最大的整数是:" + max(num1, num2, num3));
	}
	
	public static double max(double d1, double d2, double d3){
		if(d1 > d2){
			if(d1 > d3){
				return d1;
			}else{
				return d3;
			}
		}else{
			if(d2 > d3){
				return d2;
			}else{
				return d3;
			}
		}
	}
}

打印效果如图:

## 方法的重载
在同一个类中,允许出现同名,但是形参列表不同的多个方法,称为方法的重载

为什么有方法的重载?
为了重复使用方法名,简化编程,方便阅读。

程序如何辨别到底调用的是哪个方法?
重载方法虽然方法名相同,但是参数列表不同,虚拟机就是根据调用方法时,传递不同的参数来决定到底调用的是哪一个方法。

## 重载示例与练习