Object类日期时间类system类及StringBuilder字符串容器

Posted fanbao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object类日期时间类system类及StringBuilder字符串容器相关的知识,希望对你有一定的参考价值。

一、Object类常用API

1.1 概述

java.lang.Object类是Java语言中的根类,即所有类的父类。Object类中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
如果一个类没有特别指定父类, 那么默认则继承自Object类。

1.2 toString方法

public String toString() //返回值为 对象的类型+@+内存地址值
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
idea中快捷键:Alt+insert 重写toString()方法,使其能够返回实际的值。
class Demo{
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Demo{" +
                "name=‘" + name + ‘‘‘ +
                ", age=" + age +
                ‘}‘;
    }
}

1.3 equals方法

public boolean equals(Object obj) //默认比较的是对象的内存地址,只要不是同一个对象必然是false

覆写equals方法,使其比较对象内容是否完全相同。在IntelliJ IDEA中,可以使用快捷键alt+insert,并选择equals() and hashCode()进行自动代码生成。

public class ObjectDemo01 {
    private String name;
    private int age;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof ObjectDemo01)) return false;
        ObjectDemo01 that = (ObjectDemo01) o;
        return getAge() == that.getAge() &&
                Objects.equals(getName(), that.getName());
    }
}

二、日期时间类

2.1 Date类

使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻
System.out.println(new Date());    //返回值:Tue Nov 26 23:02:07 CST 2019

2.2 DateFormat类

是日期/时间格式化子类的抽象类,不能直接使用,可以配合format或parse方法使用。
format:将Date对象格式化为字符串
Date date01 = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str01 = format.format(date01);
System.out.println(str01);

parse:将字符串解析为Date对象

DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str02 = "2018年12月11日";
Date date02 = df.parse(str02);
System.out.println(date02);

2.3 Calendar类

1、年月日时分秒的获取

get方法用来获取指定字段的值,set方法用来设置指定字段的值
public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
        int minute = cal.get(Calendar.MINUTE);
        int second = cal.get(Calendar.SECOND);
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日" + hourOfDay + "时" + minute + "分" + second + "秒");
    }

2、日期推算

add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量。
public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year1 = cal.get(Calendar.YEAR);
        int month1 = cal.get(Calendar.MONTH) + 1;
        int dayOfMonth1 = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year1 + "年" + month1 + "月" + dayOfMonth1 + "日");

        // 使用add方法
        cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
        cal.add(Calendar.YEAR, -70); // 减3年
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + dayOfMonth + "日");
    }

3、获取Date对象

Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象。
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);

三、System类

3.1 时间差计算

long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
    System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end - start));

四、StringBuilder类

4.1 字符串拼接

StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。
//        新建StringBuilder。初始值可有可无
        StringBuilder sb = new StringBuilder("itcast|||");
        //        public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身
        StringBuilder sbn = sb.append("hello,").append("world!").append(true).append(100);
        //        public String toString():将当前StringBuilder对象转换为String对象
        String str = sbn.toString();
        System.out.println(str);

以上是关于Object类日期时间类system类及StringBuilder字符串容器的主要内容,如果未能解决你的问题,请参考以下文章

Object类常用API_2

关于包装类及==equals的一些误区

修改DailyRollingFileAppender类及其父类源码,解决以日期作为日志文件名时,当天的文件没有日期后缀

IntelliJ IDEA:有没有办法列出一个类及其父类实现的所有接口?

Java学习关于时间操作的应用类--Date类Calendar类及其子类

java之Date类及SimpleDateFormat类