Object概述
java.lang.Object类是Java语言中的根类,即所有类的父类。一个类都会直接或间接的继承该类,该类提供类一些常用的方法,如toString()、equal()方法
toString()方法
A:作用:打印对象的信息
B:重写前:打印的是包名类名@地址值
C重写后:打印的是对象中的属性值
equal方法
A:作用:比较两个对象
B:重写前:比较的是两个对象的地址值
C:重写后:比较的是两个对象的属性值
实例创建
package Demo08;
import java.util.Objects;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
}
创建测试类
package Demo08;
public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person("小明",18);
Person p2 = new Person("小明",18);
System.out.println(p1);// 对象类型+@+内存地址
System.out.println(p1);// Person{name='小明', age=18},重写了String方法
System.out.println(p1.equals(p2));// false 比较的是对象
System.out.println(p1.equals(p2));// true 重写了equal方法
}
}
Date类概述
java.util.Date类 表示特定的瞬间,精确到毫秒。
继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。
public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
Date类中的多数方法已经过时,常用的方法有:
public long getTime() 把日期对象转换成对应的时间毫秒值。
package Demo08;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
DateMethod();
}
public static void DateMethod(){
/* Data类的空参构造方法:
Data()获取的就是当前系统的日期和时间*/
System.out.println(new Date());
/* Date类的成员方法
long getTime() 把日期转换为毫秒(相当于System.currentTimeMills())
返回值1970年1月1日 00:00:00 Data对象表示的毫秒数
*/
Date date = new Date();
long time = date.getTime();
System.out.println(time);
/* Date类带参的构造方法:
Date(long data):传递毫秒值,把毫秒转换为Data日期*/
Date d1 = new Date(time);
System.out.println(d1);
}
}
DateFormat类
java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。
- 格式化:按照指定的格式,从Date对象转换为String对象。
- 解析:按照指定的格式,从String对象转换为Date对象。
构造方法
由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:
- public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
参数pattern是一个字符串,代表日期时间的自定义格式。 - 格式规则
常用的格式规则为:
创建SimpleDateFormat对象的代码如下:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
DateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒")
注意:格式中的字母不能更改,连接模式的符号可以更改
常用方法
- String format(Date date):将Date对象格式化为字符串
- Date parse(String source):将字符串解析为Date对象。
package Demo08;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class DateFormatTest {
public static void main(String[] args) throws ParseException {
Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = df.format(date);
System.out.println(str);
Date da = df.parse(str);
System.out.println(da);
}
}
实例应用
package Demo08;
/*题目:使用日期相关的API,计算一个人已经出生了多少天
思路:
1、使用Scanner类中的方法next,获取出生日期
2、使用DateFormat类中方法parse 方法把字符串的出生日期解析为Date格式
3、用Data格式把出生日期转换为毫秒值
4、获取当前日期的毫秒值
5、使用当前日期的毫秒值-出生日期的毫秒值
6、把毫秒的差值转换为天(x/1000/60/60/24)
*/
import javax.xml.crypto.Data;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DataExerciseTest {
public static void main(String[] args) throws ParseException {
Scanner sc =new Scanner(System.in);
System.out.println("请输入你的出生日期,格式为yyyy-MM-dd");
String birthdayString = sc.next();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayFormat = df.parse(birthdayString);
long birthdayData = birthdayFormat.getTime();
long curruntData = new Date().getTime();
System.out.println(new Date());
long dataGap = curruntData-birthdayData;
System.out.println(dataGap/1000/60/60/24);
}
}