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

xiaoxiao2021-02-28  91

                                              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); /*value/512*/ } public int day() { return value2; } 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); } }                                                        

转载请注明原文地址: https://www.6miu.com/read-78415.html

最新回复(0)