完善 3.2 data 类

public class MyDate 
{
  private int year,month,day;
  private static int thisYear;
  static 
  {
   thisYear=2012;
  }
  public MyDate(int year,int month,int day)
  {
   this.set(year,month,day);
  }
  public MyDate()
  {
   this(1970,1,1);
  }
  public MyDate(MyDate d)
  {
   this.set(d);
  }
  public void set(int year,int month,int day)
  {
   this.year=year;
   this.month=(month>=1&&month<=12)?month:1;
   this.day=(day>=1&&day<=31)?day:1;
  }
  public void set(MyDate d)
  {
   set(d.year,d.month,d.day);
  }
  public int getYear()
  {
   return this.year;
  }
  public int getMonth()
  {
   return this.month;
  }
  public int getDay(){
   return this.day;
  }
  public String toString(){
   return year+"年"+String.format("%02d",month)+"月"+String.format("%02d",day)+"日";
  }
  public static int getThisYear()
  {
   return thisYear;
  }
  public static boolean isLeapYear(int year)
  {
   return year%400==0||year%100!=0&&year%4==0;
  }
  public boolean isLeapYear()
  {
   return isLeapYear(this.year);
  }
  public boolean equals(MyDate d)
  {
   return this==d||d!=null&&this.year==d.year&& this.month==d.month &&this.day==d.day;
  }
  public static int daysOfMonth(int year,int month)
  {
   switch(month)
   {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
    case 4: case 6: case 9: case 11: return 30;
    case 2: return MyDate.isLeapYear(year)?29:28;
    default: return 0;
   }
  }
  public int daysofMonth()
  {
   return daysOfMonth(this.year,this.month);
  }
  public void tomorrow()
  {
   this.day++;
   if(this.day>this.daysofMonth())
   {
    this.day=1;
    this.month++;
    if(this.month>12)
    {
     this.month=1;
     this.year++;
    }
   }
  }
  public MyDate yestoday()
  {
   MyDate date=new MyDate(this);
   date.day--;
   if(date.day==0)
   {
    date.month--;
    if(date.month==0)
    {
     date.month=12;
     date.year--;
    }
    date.day=daysOfMonth(date.year,date.month);
   }
   return date;
  }
}
class MyDate_ex
{
 public static void main(String args[])
 {
  System.out.println("今年是"+MyDate.getThisYear()+",闰年?"+MyDate.isLeapYear(MyDate.getThisYear()));
  MyDate d1=new MyDate(2012,12,31);
  MyDate d2=new MyDate(d1);
  System.out.println("d1: "+d1+",d2: "+d2+",d1==d2? "+(d1==d2)+", d1.equals(d2)? "+d1.equals(d2));
  System.out.print(d1+"的明天是       ");
  d1.tomorrow();
  System.out.println(d1+"\n"+d1+"的昨天是    "+(d2=d1.yestoday()));
 }
}

时间: 2024-10-03 10:40:31

完善 3.2 data 类的相关文章

python3.7新增data类

从3.7版本开始,python提供了 data 类.与常规类或其他替代方法(如返回多个值或字典)相比,有以下几个优点: 数据类需要至少一定数量的代码 可以通过 eq 方法来比较不同的data类对象 可以 repr 通过很容易地打印一个数据类来进行调试 数据类需要类型提示,因此减少了 bug 一个data类的例子如下: from dataclasses import dataclass @dataclass class Card: rank: str suit: str card = Card("

【springboot】【idea】实体类免写get、set等方法,使用lombok依赖和插件的@Data类注解

需求,一个实体类,规范写法一定要对应的get.set方法,有必要还要重写toString方法.虽然可以快速生成get.set等方法,但是如果要添加或减少成员属性时就得重新生成get.set等方法. 而且一堆get.set方法,实体类看起来很臃肿[个人看法]. 方法 1.pom文件加入依赖 <!--set.get等方法免写,注解@Data--> <dependency> <groupId>org.projectlombok</groupId> <arti

Java基础知识强化90:Date类之Data类概述及其方法

1. Date类概述 类Date表示特定的瞬间,精确到毫秒 2. 构造方法 public Date():根据当前默认毫秒值创建日期对象 public Date(long date):根据给定的毫秒值创建日期对象 3. 成员方法 public long getTime() public void setTime(long time) 4. 代码示例: 1 package cn.itcast_01; 2 3 import java.util.Date; 4 5 /* 6 * Date:表示特定的瞬间

Java基础知识强化91:Date类之Data类中日期和毫秒相互转换

1.Date两个方法: 1 public long getTime():获取时间,以毫秒为单位 2 public void setTime(long time):设置时间 2. 代码示例: 1 package cn.itcast_02; 2 3 import java.util.Date; 4 5 /* 6 * public long getTime():获取时间,以毫秒为单位 7 * public void setTime(long time):设置时间 8 * 9 * 从Date得到一个毫秒

完善3-32的MyDate类

package MyDate;public class MyDate{ private int year,month,day; private static int thisYear; static { thisYear=2012; } public MyDate(int year,int month,int day) { this.set(year,month,day); } public MyDate() { this(1970,1,1); } public MyDate(MyDate d)

java常见类

package pack; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Properties; import java.util.Random; public class Main { public static void main(String[] args) throws Exception { //method1(); //Syst

非专业码农 JAVA学习笔记 3 抽象、封装和类(1)

抽象.封装和类(1)待续 首先声明,今天接了太多个电话,两个小时看书被打断多次,缩减为一个小时.不管了,走马观花也要看完几个小节: (一)抽象与封装:抽象-抽取和研究实际性问题加以考察(抽象-尼玛抽出对象…) 封装:相关操作封存在命名空间.类等 (二)java的类: 1.系统定义的类(用于import中引入) 类名 作用 Java.lang 语言包,默认加载 Java.io, In out:文件数据流操作产生的输入输出流 Java.util 低级工具,如时间data类,变成数组vector类,h

Problem D: 类的初体验(IV)

Description 定义一个类Data,只有一个int类型的属性和如下方法: 1.   缺省构造函数,将属性初始化为0,并输出"Data's default constructor.". 2.  带参构造函数,将属性初始化为指定参数,并输出"Data # is created.",其中"#"即参数值. 3. 析构函数,输出:"Data # is erased.",其中"#"是属性值. 4.   int

jQuery 3.0 的 Data 浅析

jQuery 3.0 在6月9日正式发布了,3.0 也被称为下一代的 jQuery .这个版本从14年10月开始,其中发布过一次beta 版(2016/1/14,)和候选版(2016/05/20).一路走来,颇为不易. 文章目录 Data浅析 Data在jQuery内部的使用 1.x.x 和 2.x.x 的比较 一.Data浅析 jQuery 3.0 中的 Data 是内部使用的,定义为一个“类”.一共用它创建了两个对象,dataPriv 和 dataUser.Data 有 1 个对象属性(ex