界面版抢红包
Object类
-
java.lang.Object
类是Java语言的根类,即所有类父类。Object类中描述所有方法子类都可以使用。在对象的实例化时,最终找的父类就是Object类。 - 如果没有指定父类, 默认继承Object类
查询 JDK的doc, Object类中包含的方法有11个, 我们本次学习其中的2个: - public String toString() 返回对象的字符串表示形式
- public boolean equals(0bject obj); 指示其他某个对象是否与此对象“相等”。
toString()
如果不希望使用 toString()的默认行为,则可以对它进行覆盖重写:
package com.neusoft.day12;
/**
* @author Eric Lee
* @date 2020/7/27 14:25
*/
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// @Override
// public String toString(){
// return "Person{" + "name= " + name + ", age=" + age + "}";
// }
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", 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;
}
}
测试
public class TestPerson {
public static void main(String[] args) {
Person p = new Person("张三", 111);
// com.neusoft.day12.Person@75412c2f
System.out.println(p);
}
}
equals方法
如果没有覆盖equals方法,那么Object类中默认进行 ==
运算符的对象地址比较, 只要不是同一对象,结果必然是false
java.util.Objects类
在比较两个对象的时候Objects容易抛出空指针异常, 而Objects优化了这个问题
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
日期和时间类
Date类
java.util.Date;类表示特定的瞬间,精确到毫秒
构造函数
- public Date() 分配对象并且初始化此对象, 以表示分配它的时间(精确到毫秒)
- public Date(long date) 分配对象并且初始化此对象, 以表示自从标准基准时间,即1970年1月1日 00:00:00 GMT 以来指定的毫秒数
public static void main(String[] args) {
// 创建日期对象, 返回当前时间
System.out.println(new Date());
// Mon Jul 27 15:18:39 CST 2020
// 创建日期对象,把当前的毫秒值转化成日期对象
System.out.println(new Date(0L));
// Thu Jan 01 08:00:00 CST 1970
}
- 常用方法
// 把日期对象转换为对应的时间毫秒值
System.out.println(new Date().getTime());
DateFormat类
java.text.DateFormat 是日期、时间格式化子类的抽象类, 我们通过这个类可以完成入侵和文本之间的转换,也就是可以在Date对象和String对象之间进行来回转换。
- 格式化 :按照指定格式, 从Date对象转换为String对象。
- 解析: 按照指定格式, 从String对象转换为Date对象。
构造方法:
由于DateFormat 是抽象类, 不能直接使用, 常用的子类是SimpleDateFormat、这个需要一个格式来显示指定格式化或者解析的标准 -
public SimpleDateFormat(String pattern) : 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat;参数pattern是一个字符串, 代表日期时间的自定义格式。
格式规则:
DateFormat 常用方法
- public final String format(Date date) 将Date对象格式化为字符串
- public Date parse(String source) 将字符串解析为Date对象
format方法
public static void main(String[] args) {
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
System.out.println(date);
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = df.format(date);
String str2 = df2.format(date);
System.out.println(str);
System.out.println(str2);
}
parse方法
public static void main(String[] args) throws ParseException {
String str = "2001年6月6日";
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
Date date = df.parse(str);
System.out.println(date);
// Wed Jun 06 00:00:00 CST 2001
}
案例:计算一个人出生了多少天
package com.neusoft.day12;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* @author Eric Lee
* @date 2020/7/27 16:31
*/
public class MyBirthHowDays {
public static void main(String[] args) throws Exception {
function();
}
public static void function() throws Exception {
System.out.println("请输入您旁边伙伴的出生日期 格式 yyyy-MM-dd");
String birthdayString = new Scanner(System.in).next();
Date currentDate = new Date();
// 将birthdayString转化成 Date对象
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = df.parse(birthdayString);
// 1、 获取当前时间对应的毫秒值
long currentDateTime = currentDate.getTime();
// 2、 获取出生时间对应的毫秒值
long birthdayDateTime = birthdayDate.getTime();
// 3 、 相减
long resultDateTime = currentDateTime - birthdayDateTime;
if (resultDateTime < 0){
System.out.println("老铁逗我呢,你还没出生呢");
}else{
System.out.println(resultDateTime/1000/60/60/24);
}
}
}
网友评论