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