方法的概念
一个独立的、能够完成特定功能的“代码块”
名词解析
- 返回值:完成某项特定功能,能够向调用处反馈的结果
- 方法名:方法的名称。类似变量名
- 形参:在方法定义时小括号里面的内容,带有数据类型(形参时局部变量)
- 实参:在方法调用时小括号里面的内容,不带数据类型
- 返回:通过return关键字,将制定的数据返回给调用处,方法一旦return,则不再执行后面的语句
- 修饰符:public/private/protected/default/static/abstract/final
- 调用:使用方法-格式:方法名(实参)
- 传参:使用方法时,用实参为形参赋值
使用时的注意事项
- 方法定义时,方法体内返回的返回值类型必须和定义时相同
- 方法可以嵌套调用,但是不可以嵌套定义
- 定义方法时如果返回值为void,则方法体内仍然可以使用return关键字,但是return后面不能跟随任何数据
- 方法的重载,不可以出现完全相同的冲突(不能变成重写)
案例
凯撒日期
public static void main(String[] args) {
//凯撒日期---方法版本
// int[] date = input();//input方法直接存储了年月日
System.out.println(sumOfDate(input()));
}
/*****
* 用于输入日期
* @return:输入的年月日,用数组形式返回[0]year [1]month [2]day
*/
public static int[] input(){
int[] date = new int[3];
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份");
date[0] = sc.nextInt();
System.out.print("请输入月份");
date[1] = sc.nextInt();
System.out.print("请输入日期");
date[2] = sc.nextInt();
return date;
}
/*****
* 判断一个年份是平年还是闰年
* @param year:将要被判断的年份
* @return:true--闰年 false--平年
* EMail:ice_wan@msn.cn
*/
public static boolean judgeYear(int year){
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
/***
* 计算指定的年份中指定的月份共有多少天
* @param year:年份
* @param month:月份
* @return : 计算结果,即天数
*/
public static int dayOfMonth(int year, int month){
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
int t = judgeYear(year) ? 1 : 0;
return 28 + t;
default:
System.out.println("ERROR");
return -1;
}
}
/****
* 判断用户输入的日期是否正确
* @param year:年份
* @param month:月份
* @param day:日期
* @return:true---正确 false---错误
*/
public static boolean judgeInput(int year, int month, int day){
return !(year < 0 || month > 12 || month < 1 || day < 1 || day > dayOfMonth(year, month));
}
/*****
* 计算凯撒日期天数综合
* @param year:年份
* @param month:月份
* @param day:日期
* @return:计算结果,即凯撒日期
* EMail:ice_wan@msn.cn
*/
public static int sumOfDate(int[] date){
if(!judgeInput(date[0], date[1], date[2])){
System.out.println("输入的日期有误!~");
return -1;
}
int sum = 0;
for (int i = date[1] - 1; i > 0; i--){
sum += dayOfMonth(date[0], i);
}
sum += date[2];
return sum;
}
方法的重载
方法重载的特点
- 方法名相同
- 形参列表不同(数量不同、类型不同、顺序不同)
public static void fun(int a, int b){}
public static void fun(float a, int b){}
public static void fun(int a, float b){}
public static void fun(){}
public static void fun(int a, int b, String str){}
public static void fun(float a, double b){}