# 大数据学习笔记第5天-函数 #
## 回顾
## 大纲
- 方法的定义
- 方法的特点
- 方法的应用
- 方法的重载
## 方法的定义
什么是方法?
- 方法就是定义在类中的,具有特定功能的一段小程序;
- 方法也称为函数;
- 方法可以接收输入,根据需要输出内容;
方法定义的格式:
修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ...){
方法体语句;
return [返回值];
}
修饰符:暂时固定写成public static
返回值类型:方法执行后返回结果的数据类型
形式参数列表:
参数类型:是形式参数的数据类型;
形式参数:是一个变量,用于接收方法被调用时传给方法的实际参数的值
实际参数:放大调用时传递给形式参数的具体数值
return:关键字,用于表示方法结束
返回值:该方法运算后需要返回给调用者的结果,其类型要和返回值类型匹配,或者可以自动转型
## 方法的特点:
- 定义方法可以将功能代码进行封装;
- 提高了代码的复用性;
- 方法只有被调用才会被执行;
- 注意:方法之间是调用关系,不可以在方法内部再定义方法;
## 方法练习:
1. 定义方法,用于计算两个double整型的和;
2. 定义方法,用于打印九九乘法表;
3. 定义方法,用于打印任何行数和列数的“+”号;
4. 定义方法,用于判断一个int数是否是偶数;
5. 定义方法,接收一个int值,返回该值对应的应该是星期几,要求switch结构实现;
6. 定义方法,获取两个数中的最大值;
7. 定义方法,获取三个数中的最大值;
### 答案
题1:
/*
定义方法,用于计算两个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:
/*
定义方法,用于打印九九乘法表;
*/
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();
}
}
}
打印效果如图:
![](./img/05/2018-07-20_003800.png)
题3:
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();
}
}
}
打印效果如图:
![](./img/05/2018-07-20_004425.png)
题4:
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;
}
}
}
打印效果如图:
![](./img/05/2018-07-20_004959.png)
题5:
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;
}
}
打印效果如图:
![](./img/05/2018-07-20_010046.png)
题6:
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;
}
}
}
打印效果如图:
![](./img/05/2018-07-20_010536.png)
题7:
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;
}
}
}
}
打印效果如图:
![](./img/05/2018-07-20_011147.png)
## 方法的重载
在同一个类中,允许出现同名,但是形参列表不同的多个方法,称为方法的重载。
为什么有方法的重载?
为了重复使用方法名,简化编程,方便阅读。
程序如何辨别到底调用的是哪个方法?
重载方法虽然方法名相同,但是参数列表不同,虚拟机就是根据调用方法时,传递不同的参数来决定到底调用的是哪一个方法。
## 重载示例与练习
...