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

                                              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);
	}
}

                                                       



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值