Object {#Object}
java.lang.Object
类是Java
语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例 化的时候,终找的父类就是Object
。
如果一个类没有特别指定父类, 那么默认则继承自 Object
类。例如:
public class MyClass /*extends Object*/ {
// ...
}
根据
JDK
源代码及Object
类的API
文档,Object 类当中包含的方法有 11 个。今天主要复习toString
和equals
方法:
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">&&</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
、返回对象的字符串表 示形式、比较两个对象。
在比较两个对象的时候,Object
的 equals
方法容易抛出空指针异常,而 Objects
类中的 equals
方法就优化了这个问 题。方法如下:
public static boolean equals(Object a, Object b)
: 判断两个对象是否相等。
Objects 类的作用是 {#Objects 类的作用是}
Objects 类是对象的工具类, 他里面的方法用来操作对象
Objects 类常用方法 {#Objects 类常用方法}
equals(Object a, Object b)
: 较两个对象是否相等, 如果相等返回 trueisNull(Object obj)
判断对象是 null, 如果是 null 返回 truenonNull(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 + 回车 -> 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] && 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] && 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] && 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 月。
- 日期是有大小关系的,时间靠后,时间越大。