一 日期抽象数据类型API

public class Date

Date(int month,int day,int year)

创建一个日期

int day()

int month()

int year()

String toString()

对象的字符串表示

二 测试用例

package MyDate;


/**
* Copyright (C), 2020-2020, XXX有限公司
* FileName: Test
* Author:   cakin
* Date:     2020/1/11
* Description: Date日期测试
*/
public class Test {
    public static void main( String[] args ) {
        int m = Integer.parseInt(args[0]);
        int d = Integer.parseInt(args[1]);
        int y = Integer.parseInt(args[2]);
        BasicDate date1 = new BasicDate(m,d,y);
        SmallDate date2 = new SmallDate(m,d,y);
        System.out.println(date1);
        System.out.println(date2);
    }
}

三 BasicDate的实现

package MyDate;

/**
* Copyright (C), 2020-2020, XXX有限公司
* FileName: BasicDate
* Author:   cakin
* Date:     2020/1/11
* Description: Date抽象数据类型的一种实现-BasicDate
*/
public class BasicDate {
    private final int month;
    private final int day;
    private final int year;

    public BasicDate( int month, int day, int year ) {
        this.month = month;
        this.day = day;
        this.year = year;
    }

    public int month() {
        return month;
    }

    public int day() {
        return day;
    }

    public int year() {
        return year;
    }

    @Override
    public String toString() {
        return month() +
                "/" + day() +
                "/" + year() ;
    }
}

四 SmallDate的实现

package MyDate;

/**
* Copyright (C), 2020-2020, XXX有限公司
* FileName: SmallDate
* Author:   cakin
* Date:     2020/1/11
* Description: Date抽象数据类型的一种实现-SmallDate
*/
public class SmallDate {
    private final int value;
    public SmallDate(int m,int d,int y){
        value = y*512+m*32+d;
    }
    public int month(){
        return (value/32)%16;
    }
    public int day(){
        return value%32;
    }
    public int year(){
        return value/512;
    }

    @Override
    public String toString() {
        return month()+"/"+day()+"/"+year();
    }
}

五 测试结果

F:\Algorithm\target\classes>java MyDate.Test 12 31 1999
12/31/1999
12/31/1999

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐