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