java.lang.Object类是java语言中的根类,及所有的父类,在对象的实例化的时候,最终找到的父类是Object类.
如果一个类没有?名父类,那么默认的就是Object类.
1 public class MyClass extends Object{ 2 //代码块 3 }
根据JDK源代码及Object类的API文档,Object类有11个方法.
- public String toString():返回该对象的字符串表示。
- public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
方法摘要:
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,
经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
覆盖重写:
代码演示:
1 public class Person {
2 private String name;
3 private int age;
4
5 @Override
6 public String toString() {
7 return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ‘}‘;
8 }
9
10 // 省略构造器与Getter Setter
11 }
equals方法:
方法摘要:
默认地址比较:
如果没有覆盖重写equals方法,那么Object类默认进行==运算符的对象地址值比较,
只要不是同一个对象,结果必然为false。
对象内容比较:
如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,
则可以覆盖重写equals方法。
对象内容比较演示代码:
1 import java.util.Objects;
2
3 public class Person {
4 private String name;
5 private int age;
6
7 @Override
8 public boolean equals(Object o) {
9 // 如果对象地址一样,则认为相同
10 if (this == o)
11 return true;
12 // 如果参数为空,或者类型信息不一样,则认为不同
13 if (o == null || getClass() != o.getClass())
14 return false;
15 // 转换为当前类型
16 Person person = (Person) o;
17 // 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果
18 return age == person.age && Objects.equals(name, person.name);
19 }
20 }
Objects类:
概述:
在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,
这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),
用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。
在比较两个对象的时候,Object的equals方法容易抛出空指针异常,
而Objects类中的equals方法就优化了这个问题。方法如下:
- public static boolean equals(Object a, Object b):判断两个对象是否相等
代码演示:
1 public static boolean equals(Object a, Object b) { 2 return (a == b) || (a != null && a.equals(b)); 3 }
概述:
- public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
- public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间
(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。
简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻。例如:
代码演示:
1 package com.heima.Date;
2
3 import java.util.Date;
4
5 //Date
6 public class Dmo01 {
7 public static void main(String[] args) {
8 //创建日期的对象
9 System.out.println(new Date());
10 //创建日期对象,把当前的毫秒值转换成对象。
11 System.out.println(new Date(0L));
12 }
13 }
14 /*
15 Mon Apr 01 16:46:03 CST 2019
16 Thu Jan 01 08:00:00 CST 1970
17 */
格式化:按照指定的格式,从Date对象转换为String对象
解析:按照指定的格式,从String对象转换为Date对象。
构造方法:
由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。
这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:
- public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造
SimpleDateFormat。
参数pattern是一个字符串,代表日期时间的自定义格式。
格式规则:
代码演示:
DateFormat类的常用方法有:
public Date parse(String source)
:将字符串解析为Date对象。
创建SimpleDateFormat对象的代码如:
1 package com.heima.Date; 2 //format方法 3 import java.text.DateFormat; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 7 public class Demo02 { 8 public static void main(String[] args) { 9 //创建日期对象 10 Date date = new Date(); 11 //在创建日期格式化对象,在获取格式化对象时间可以指定风格 12 DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 13 String str=simpleDateFormat.format(date); 14 System.out.println(str); 15 } 16 }
1 public class Demo02 {
2 public static void main(String[] args) throws ParseException {
3 //在创建日期格式化对象,在获取格式化对象时间可以指定风格
4 DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
5 //public Date parse(String source)
:将字符串解析为Date对象。
6 String str="2019-04-01 16:56:52";
7 Date date=simpleDateFormat.parse(str);//抛出异常
8 System.out.println(date);//Mon Apr 01 16:56:52 CST 2019
9 }
10 }
原文:https://www.cnblogs.com/luliang1215/p/10637023.html