封装日期数据类型的两种实现(algs4)

来源:互联网 发布:大数据概念上市公司 编辑:程序博客网 时间:2024/06/03 15:11

                                              Date1API

public        class   Date1

private  final  int     month;

private  final  int     day;

private  final  int     year;

public                       Date1(int m,int d,int y)          构造函数初试化变量             

public            int       month()                                   返回month

public            int       day()                                         返回day

public            int       year()                                        返回year

public           String  toString()                                 重写toString() 

              

package date;/*封装日期的数据类型的实现*/public class Date1{private final int month;private final int day;private final int year;public Date1(int m,int d,int y){month=m;day=d;year=y;}public int month(){return month;}public int day(){return day;}public int year(){return year;}public String toString(){return month()+"/"+day()+"/"+year();}}

                                                       Date2API

public            class      Date2

private  final  int          value;                    

public                           Date2(int m,int d,int y)            构造函数对参数进行移位存储,初试化变量          

public             int         month()

public             int        day()

public             int        year()

public             String  toString()


package date;/*封装日期的数据类型的实现*/public class Date2{private final int value;public Date2(int m,int d,int y){value=(y<<9)+(m<<5)+d;         /*一定要有括号  !!  value=y*512+m*32+d;*/}               /*移位运算符优先级高于">"低于"—"*/public int month(){return (value>>5)%16;         /*value/512%16*/}public int day(){return value%32;}public int year(){return value>>9;             /*value/512*/}public String toString(){return month()+"/"+day()+"/"+year();}}

package date;import java.util.Scanner;/**/public class TestDate{public static void main(String[] args){System.out.println("请依次输入月,日期,年:");Scanner sc=new Scanner(System.in);int m=sc.nextInt();int d=sc.nextInt();int y=sc.nextInt();Date1 date1=new Date1(m,d,y);System.out.println(date1);Date2 date2=new Date2(m,d,y);System.out.println(date2);}}

                                                       



原创粉丝点击