51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【Java 基础】Java-[Object,Date,Calendar] 复习

Object {#Object}

java.lang.Object类是 Java 语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例 化的时候,终找的父类就是Object

如果一个类没有特别指定父类, 那么默认则继承自 Object 类。例如:

public class MyClass /*extends Object*/ {    
    // ...    
}

根据 JDK 源代码及 Object 类的 API 文档,Object 类当中包含的方法有 11 个。今天主要复习 toStringequals方法:

  • public String toString():返回该对象的字符串表示。
  • public boolean equals(Object obj):指示其他某个对象是否与此对象"相等"。

ToString {#ToString}

  • public String toString():返回该对象的字符串表示。

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型 +@+ 内存地址值。 由于toString 方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

覆盖重写 {#覆盖重写}

如果不希望使用 toString 方法的默认行为,则可以对它进行覆盖重写。例如自定义的 Person 类:

public class Persion {
	private String name;
	private int age;

    <span class="token comment">// 省略 getter/setter 方法</span>
    <span class="token annotation punctuation">@Override</span>
    <span class="token keyword">public</span> <span class="token class-name">String</span> <span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	<span class="token keyword">return</span> <span class="token string">"Persion{"</span> <span class="token operator">+</span>
    			<span class="token string">"name='"</span> <span class="token operator">+</span> name <span class="token operator">+</span> <span class="token char">'\''</span> <span class="token operator">+</span>
    			<span class="token string">", age="</span> <span class="token operator">+</span> age <span class="token operator">+</span>
    			<span class="token char">'}'</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>



}

IntelliJ IDEA 中,可以点击 Code 菜单中的 Generate... ,也可以使用快捷键 alt+insert,点击 toString() 选 项。

Equals {#Equals}

  • public boolean equals(Object obj):指示其他某个对象是否与此对象"相等"。

调用成员方法 equals 并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的"相同"有默认和自定义两种方式。

默认地址比较 {#默认地址比较}

如果没有覆盖重写 equals 方法,那么 Object 类中默认进行 == 运算符的对象地址比较,只要不是同一个对象,结果必然为false

public static void main(String[] args) {
	// 创建两个对象进行比较
	Teacher t1 = new Teacher("墨白", 21);
	Teacher t2 = new Teacher("墨白", 21);

    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"equals:"</span> <span class="token operator">+</span> t1<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>t1<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// equals: true</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"equals:"</span> <span class="token operator">+</span> t1<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>t2<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// equals: true</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"equals:"</span> <span class="token operator">+</span> t1<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Dog</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// equals: false</span>



}

对象内容比较 {#对象内容比较}

如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写 equals 方 法。例如:

public class Persion {
	private String name;
	private int age;

    <span class="token annotation punctuation">@Override</span>
    <span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">equals</span><span class="token punctuation">(</span><span class="token class-name">Object</span> o<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	<span class="token comment">// 如果对象地址一样, 则认为相同</span>
    	<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span> <span class="token operator">==</span> o<span class="token punctuation">)</span>
    		<span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
    	<span class="token comment">// 如果参数为空, 或者类型不一样, 则返回 false</span>
    	<span class="token keyword">if</span> <span class="token punctuation">(</span>o <span class="token operator">==</span> <span class="token keyword">null</span> <span class="token operator">||</span> <span class="token function">getClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">!=</span> o<span class="token punctuation">.</span><span class="token function">getClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
    		<span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    	<span class="token comment">// 转换为当前类型</span>
    	<span class="token class-name">Persion</span> persion <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token class-name">Persion</span><span class="token punctuation">)</span> o<span class="token punctuation">;</span>
    	<span class="token comment">// 要求基本类型相同, 并且将引用类型交给 java.util.Objects 类的 equals 静态方法取用结果</span>
    	<span class="token keyword">return</span> age <span class="token operator">==</span> persion<span class="token punctuation">.</span>age <span class="token operator">&amp;&amp;</span> <span class="token class-name">Objects</span><span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> persion<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>



}

这段代码充分考虑了对象为空、类型一致等问题,但方法内容并不唯一。大多数 IDE 都可以自动生成 equals 方法的代码内容。在 IntelliJ IDEA 中,可以使用 Code菜单中的 Generate... 选项,也可以使用快捷键 alt+insert,并选 择 equals() and hashCode() 进行自动代码生成

Objects {#Objects}

JDK1.7 添加了一个 Objects 工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是 null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表 示形式、比较两个对象。

在比较两个对象的时候,Objectequals 方法容易抛出空指针异常,而 Objects 类中的 equals 方法就优化了这个问 题。方法如下:

  • public static boolean equals(Object a, Object b): 判断两个对象是否相等。

Objects 类的作用是 {#Objects 类的作用是}

Objects 类是对象的工具类, 他里面的方法用来操作对象

Objects 类常用方法 {#Objects 类常用方法}

  • equals(Object a, Object b): 较两个对象是否相等, 如果相等返回 true
  • isNull(Object obj) 判断对象是 null, 如果是 null 返回 true
  • nonNull(Object obj)判断对象不是 null, 如果不是 null 返回 true

代码案例:

public static void main(String[] args) {
	Teacher t1 = new Teacher(" 墨白 ", 21);
	Teacher t2 = new Teacher(" 墨白 ", 21);

    // 将对象 1 设置为 null
    t1 = null;
    if (t1 != null) {
    	System.out.println("t1 = " + t1.equals(t2));// null 不能调用方法
    }

    // Objects 类中的 static boolean equals​(Object a, Object b) 比较两个对象是否相等, 如果相等返回 true, 否则返回 false
    // Objects 类中的 equals​更加安全, 建议使用这个
    System.out.println("Objects.equals:" + Objects.equals(t1, t2)); // Objects.equals:false

    // static boolean isNull​(Object obj) 判断对象是否为 null, 如果是 null 返回 true
    System.out.println(Objects.isNull(t1)); // true
    System.out.println(Objects.isNull(t2)); // false

    // static boolean nonNull​(Object obj) 判断对象不是 null, 如果不是 null 返回 true
    System.out.println(Objects.nonNull(t1)); // false
    System.out.println(Objects.nonNull(t2)); // true



`}`

Date {#Date}

java.util.Date 类表示特定的瞬间,精确到毫秒。 查阅 Date 类的描述,发现 Date 拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

  • public Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

  • public Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为"历元 (epoch)",即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

tips: 由于中国处于东八区(GMT+08:00)是比世界协调时间 / 格林尼治时间(GMT)快 8 小时的时区,当格 林尼治标准时间为 0:00 时,东八区的标准时间为 08:00。

常用方法 {#常用方法}

简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定 long 类型的构造参数,可以自定义毫秒时刻。

public static void main(String[] args) {
    // (常用)Date​() 创建一个 Date 对象, 当前时间(执行这行代码的时间)
	Date now = new Date();
	//  Mon May 04 10:30:39 CST 2020
	System.out.println("now =" + now);

    <span class="token comment">// 2.Date​(long date) 创建一个 Date 对象, 在 1970 年 1 月 1 日 00:00:00 基础上增加的指定毫秒数</span>
    <span class="token class-name">Date</span> d2 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 加 1 秒</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"d2 ="</span> <span class="token operator">+</span> d2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Thu Jan 01 08:00:01 CST 1970</span>

    <span class="token comment">// (常用)long getTime​() 返回自 1970 年 1 月 1 日以来,由 Date 对象表示的的毫秒数。</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"getTime:"</span> <span class="token operator">+</span> now<span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 1588559439285</span>

    <span class="token comment">// void setTime​(long time) 将此 Date 对象设置为在 1970 年 1 月 1 日 00:00:00 基础上增加的指定毫秒数</span>
    now<span class="token punctuation">.</span><span class="token function">setTime</span><span class="token punctuation">(</span><span class="token number">2000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"now ="</span> <span class="token operator">+</span> now<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// now = Thu Jan 01 08:00:02 CST 1970</span>



}

  • Date 类的作用

Date 类代表了一个特定的时间,以毫秒的精度。

  • Date()构造方法的作用?

创建一个当前时间的 Date 对象

  • Date 类的 getTime()方法的作用?

获取 date 对象距 1970 年 1 月 1 日的毫秒值

tips: 在使用 println 方法时,会自动调用 Date 类中的 toString 方法。Date 类对 Object 类中的 toString 方法进行了覆盖重写,所以结果为指定格式的字符串。

DateFormat {#DateFormat}

概述 {#概述}

java.text.DateFormat是日期 / 时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转 换, 也就是可以在 Date 对象与 String 对象之间进行来回转换。

  • 格式化:按照指定的格式,从 Date 对象转换为 String 对象。

  • 解析:按照指定的格式,从 String 对象转换为 Date 对象。

构造方法 {#构造方法}

由于 DateFormat 为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat 。这个类需要一个 模式(格式)来指定格式化或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。 参数 pattern 是一个字符串,代表日期时间的自定义格式。

格式规则 {#格式规则}

常用的格式规则为:

| 标识字母 | 含义 | |:----:|:--:| | Y | 年 | | M | 月 | | d | 日 | | H | 时 | | m | 分 | | s | 秒 |

备注:更详细的格式规则,可以参考 SimpleDateFormat 类的 API 文档。

常用方法 {#常用方法 -1}

DateFormat 类的常用方法有:

  • public String format(Date date):将 Date 对象格式化为字符串。

  • public Date parse(String source):将字符串解析为 Date 对象。

代码示例 {#代码示例}

public static void main(String[] args) throws ParseException {
	// 4. 需求: 将 当前时间的 Date 对象 转成 "2018 年 9 月 15 日 19 时 18 分 19 秒"
	// 1. 创建当前时间的 Date 对象
	Date now = new Date();
	// 2. 创建 SimpleDateFormat 对象
	// 2.1 指定时间格式
	// 2.1.1 明确目标格式:"2018 年 9 月 15 日 19 时 18 分 19 秒"
	// 2.1.2 不会变的不理会
	// 2.1.3 会变化的使用特殊字母代替 "yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒"
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
	// 3. 调用方法将 Date 格式化成文本
	// String format​(Date date) 将日期格式化成日期 / 时间字符串。
	String str = sdf.format(now);
	// 2019 年 04 月 29 日 10 时 14 分 34 秒
	System.out.println("str =" + str);

    <span class="token comment">// 6. 需求: 将字符串 "2007-12-26 10:13:31" 转成 Date 对象</span>
    <span class="token comment">// 1. 定义时间字符串</span>
    <span class="token class-name">String</span> str2 <span class="token operator">=</span> <span class="token string">"2020-5-4 10:55:31"</span><span class="token punctuation">;</span>
    <span class="token comment">// 2. 创建 SimpleDateFormat 对象</span>
    <span class="token class-name">SimpleDateFormat</span> sdf2 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SimpleDateFormat</span><span class="token punctuation">(</span><span class="token string">"yyyy-MM-dd HH:mm:ss"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">// 3. 将字符串解析为 Date 对象:Date parse​(String source) 将字符串解析成 Date 对象</span>
    <span class="token class-name">Date</span> d <span class="token operator">=</span> sdf2<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>str2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// alt + 回车 -&gt; Add exception ...</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"d ="</span> <span class="token operator">+</span> d<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Mon May 04 10:55:31 CST 2020</span>



}

Calendar {#Calendar}

概述 {#概述 -1}

java.util.Calendar是日历类,在 Date 后出现,替换掉了许多 Date 的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

Calendar为抽象类,不能直接创建对象,而是通过静态方法创建,返回子类对象,如下:

Calendar静态方法

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历
 Calendar cal = Calendar.getInstance(); 

常用方法 {#常用方法 -2}

根据 Calendar 类的 API 文档,常用方法有:

  • public int get(int field):返回给定日历字段的值。

  • public void set(int field, int value):将给定的日历字段设置为给定值。

  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指 定的时间量。

  • public Date getTime() :返回一个表示此 Calendar 时间值(从历元到现在的毫秒偏移量)的 Date 对象。 Calendar 类中提供很多成员常量,代表给定的日历字段:

| 字段值 | 含义 | |:------------:|:-----------------------:| | YEAR | 年 | | MONTH | 月(从 0 开始,可以 +1 使用) | | DAY_OF_MONTH | 月中的天(几号) | | HOUR | 时(12 小时制) | | HOUR_OF_DAY | 时(24 小时制) | | MINUTE | 分 | | SECOND | 秒 | | DAY_OF_WEEK | 周中的天(周几,周日为 1,可以 -1 使用) |

代码演示 {#代码演示}

public class CalendarDemo1 {
	public static void main(String[] args) {
		// test01();
		// test02();
		// test03();
		test04();
	}

    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">test04</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	<span class="token class-name">Calendar</span> cal <span class="token operator">=</span> <span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// Date getTime​() 将 Calendar 转成 Date</span>
    	<span class="token class-name">Date</span> date <span class="token operator">=</span> cal<span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"date ="</span> <span class="token operator">+</span> date<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Mon May 04 11:22:52 CST 2020</span>
    <span class="token punctuation">}</span>

    <span class="token comment">/**
     * CreateTime: 2020/5/4 11:22
     * Return:void
     * MethodName:[test03] &amp;&amp; Param:[[]]
     * 方法说明: void add​(int field, int amount) 根据日历的规则,在当前时间上加上或减去指定的时间
     */</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">test03</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	<span class="token class-name">Calendar</span> calendar <span class="token operator">=</span> <span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 10 年之前:- 数表示之前, 正数表示之后</span>
    	calendar<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">YEAR</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 10 年之后</span>
    	calendar<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">YEAR</span><span class="token punctuation">,</span> <span class="token operator">+</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 1000 天以前</span>
    	calendar<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">DAY_OF_MONTH</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1000</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// calendar = java.util.GregorianCalendar[time=1502162454543,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=220,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=20,SECOND=54,MILLISECOND=543,ZONE_OFFSET=28800000,DST_OFFSET=0]</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"calendar ="</span> <span class="token operator">+</span> calendar<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token comment">/**
     * CreateTime: 2020/5/4 11:15
     * Return:void
     * MethodName:[test02] &amp;&amp; Param:[[]]
     * 方法说明: void set​(int field, int value) 将给定的日历字段设置为给定的值
     */</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">test02</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	<span class="token class-name">Calendar</span> calendar <span class="token operator">=</span> <span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"calendar ="</span> <span class="token operator">+</span> calendar<span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 修改年</span>
    	calendar<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">YEAR</span><span class="token punctuation">,</span> <span class="token number">9012</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 修改月</span>
    	calendar<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">MONTH</span><span class="token punctuation">,</span> <span class="token number">13</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 修改日</span>
    	calendar<span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">DAY_OF_MONTH</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"calendar ="</span> <span class="token operator">+</span> calendar<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token comment">/**
     * CreateTime: 2020/5/4 11:12
     * Return:void
     * MethodName:[test01] &amp;&amp; Param:[[]]
     * 方法说明: int get​(int field) 返回指定时间单位的时间
     */</span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">test01</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	<span class="token comment">// 创建 Calendar 对象</span>
    	<span class="token class-name">Calendar</span> calendar <span class="token operator">=</span> <span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 获取年</span>
    	<span class="token keyword">int</span> year <span class="token operator">=</span> calendar<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">YEAR</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"year ="</span> <span class="token operator">+</span> year<span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 获取月 [calendar.get(Calendar.MONTH) + 1; 方法是从 0 开始获取当前月份的, 所以需要 +1]</span>
    	<span class="token keyword">int</span> month <span class="token operator">=</span> calendar<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">MONTH</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"month ="</span> <span class="token operator">+</span> month<span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 获取日</span>
    	<span class="token keyword">int</span> day <span class="token operator">=</span> calendar<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">DAY_OF_MONTH</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"day ="</span> <span class="token operator">+</span> day<span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 获取时</span>
    	<span class="token keyword">int</span> hour <span class="token operator">=</span> calendar<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">HOUR</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"hour ="</span> <span class="token operator">+</span> hour<span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 获取分</span>
    	<span class="token keyword">int</span> minute <span class="token operator">=</span> calendar<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">MINUTE</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"minute ="</span> <span class="token operator">+</span> minute<span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token comment">// 获取秒</span>
    	<span class="token keyword">int</span> second <span class="token operator">=</span> calendar<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token class-name">Calendar</span><span class="token punctuation">.</span><span class="token constant">SECOND</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"second ="</span> <span class="token operator">+</span> second<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>



}

  • 西方星期的开始为周日,中国为周一。
  • 在 Calendar 类中,月份的表示是以 0-11 代表 1-12 月。
  • 日期是有大小关系的,时间靠后,时间越大。
赞(4)
未经允许不得转载:工具盒子 » 【Java 基础】Java-[Object,Date,Calendar] 复习