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

Java零基础入门——方法

程序员文章站 2022-07-10 08:21:10
...

方法的概念

一个独立的、能够完成特定功能的“代码块”

名词解析

  1. 返回值:完成某项特定功能,能够向调用处反馈的结果
  2. 方法名:方法的名称。类似变量名
  3. 形参:在方法定义时小括号里面的内容,带有数据类型(形参时局部变量)
  4. 实参:在方法调用时小括号里面的内容,不带数据类型
  5. 返回:通过return关键字,将制定的数据返回给调用处,方法一旦return,则不再执行后面的语句
  6. 修饰符:public/private/protected/default/static/abstract/final
  7. 调用:使用方法-格式:方法名(实参)
  8. 传参:使用方法时,用实参为形参赋值

使用时的注意事项

  1. 方法定义时,方法体内返回的返回值类型必须和定义时相同
  2. 方法可以嵌套调用,但是不可以嵌套定义
  3. 定义方法时如果返回值为void,则方法体内仍然可以使用return关键字,但是return后面不能跟随任何数据
  4. 方法的重载,不可以出现完全相同的冲突(不能变成重写)

案例

凯撒日期

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:[email protected]
 */
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:[email protected]
 */
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;
}

方法的重载

方法重载的特点

  1. 方法名相同
  2. 形参列表不同(数量不同、类型不同、顺序不同)
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){}