美文网首页
day12界面版抢红包、Object类、常用API

day12界面版抢红包、Object类、常用API

作者: __method__ | 来源:发表于2020-07-27 15:11 被阅读0次

界面版抢红包

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);
        }

    }
}

相关文章

网友评论

      本文标题:day12界面版抢红包、Object类、常用API

      本文链接:https://www.haomeiwen.com/subject/ypszlktx.html