【JAVA进阶】常用API

📃个人主页:个人主页

🔥系列专栏:JAVASE基础

目录

1.API概述

2.Object类

3.Objects

4.StringBuilder

 5.日期与时间

Date 类

SimpleDateFormat

Calendar

6.JDK8新增日期类


1.API概述

什么是API?

  • API(Application Programming interface)  应用程序编程接口。
  • 简单来说:就是Java帮我们已经写好的一些方法,我们直接拿过来用就可以了。

2.Object类

Object类的作用:

  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。
  • Object作为所有类的父类,提供了很多常用的方法给每个子类对象拿来使用。

Object类的常用方法:

方法名

说明

public String toString()

默认是返回当前对象在堆内存中的地址信息:

类的全限名@内存地址

public boolean equals(Object o)

默认是比较当前对象与另一个对象的地址是否相同,

相同返回true,不同返回false

Object的toString方法:

问题引出

  • 开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
  • 开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。

toString存在的意义

  • 父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!

Object的equals方法:

问题思考

  • 直接比较两个对象的地址是否相同完全可以用“==”替代equals。
  • 同时,开发中很多业务情况下,更想判断2个对象的内容是否一样。

equals存在的意义

  • 为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)。

3.Objects

Objects的常见方法:

方法名

说明

public static boolean equals(Object a, Object b)

比较两个对象的,底层会先进行非空判断,

从而可以避免空指针异常。再进行equals比较

public static boolean isNull(Object obj) 

判断变量是否为null ,为null返回true ,反之

源码分析:

public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}

4.StringBuilder

StringBuilder概述

  • StringBuilder是一个可变的字符串的操作类,我们可以把它看成是一个对象容器。
  • 使用StringBuilder的核心作用:操作字符串的性能比String要更高(如拼接、修改等)。

String类拼接字符串原理图:【创建了多个对象】

 StringBuilder提高效率原理图

结论:当需要进行字符串操作的时候,应该选择StringBuilder来完成,性能更好 

StringBuilder 构造器

名称

说明

public StringBuilder()

创建一个空白的可变的字符串对象,不包含任何内容

public StringBuilder(String str)

创建一个指定字符串内容的可变字符串对象

StringBuilder常用方法

方法名称

说明

public StringBuilder append(任意类型)

添加数据并返回StringBuilder对象本身

public StringBuilder reverse()

将对象的内容反转

public int length()

返回对象内容长度

public String toString()

通过toString()就可以实现把StringBuilder转换为String

为什么拼接、反转字符串建议使用StringBuilder?

  • StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。
  • String :内容是不可变的、拼接字符串性能差。
  • 定义字符串使用String
  • 拼接、修改等操作字符串使用StringBuilder

 5.日期与时间

Date 类

Date类代表当前所在系统的日期时间信息。

Date的构造器

名称

说明

public Date()

创建一个Date对象,代表的是系统当前此刻日期时间。

 Date的常用方法

名称

说明

public long getTime()

返回从1970年1月1日    00:00:00走到此刻的总的毫秒数

时间毫秒值 -> 日期对象

构造器

说明

public Date(long time)

把时间毫秒值转换成Date日期对象。

Date方法

说明

public void setTime(long time)

设置日期对象的时间为当前时间毫秒值对应的时间

案例

请计算出当前时间往后走1小时121秒之后的时间是多少。 

    public void test(){
        Date date = new Date();
        System.out.println(date);
        //请计算出当前时间往后走1小时121秒之后的时间是多少。
       Long dateTime =date.getTime()+(1*60*60+121)*1000;
       
       date.setTime(dateTime);
       System.out.println(date);
    }

SimpleDateFormat

代表简单日期格式化,可以用来把日期时间格式化成为我们想要的形式

 构造器

构造器

说明

public SimpleDateFormat​(String pattern)

创建简单日期格式化对象,并封装格式化的形式信息

格式化方法 

格式化方法

说明

public final String format(Date date)

将日期格式化成日期/时间字符串

public final String format(Object time)

将时间毫秒值式化成日期/时间字符串

 格式化的时间形式的常用的模式对应关系如下:

SimpleDateFormat解析字符串时间成为日期对象

解析方法

说明

 public Date parse​(String source)

  从给定字符串的开始解析文本以生成日期

    public void test() throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = new Date();
        System.out.println(simpleDateFormat.format(date));

        //请计算出当前时间往后走1小时121秒之后的时间是多少。
        long time = date.getTime()+(1*60*60+121)*1000;
        System.out.println(simpleDateFormat.format(time));

        System.out.println("----------------------------------------------------------");
        System.out.println("SimpleDateFormat解析字符串时间成为日期对象:");

        Date parse = simpleDateFormat.parse("2022-01-04 12:30:30");
        System.out.println(simpleDateFormat.format(parse));
        //2分钟后:
        Long date2=parse.getTime()+2*60*1000;
        System.out.println(simpleDateFormat.format(date2));


    }

Calendar

  • Calendar代表了系统此刻日期对应的日历对象。
  • Calendar是一个抽象类,不能直接创建对象。

Calendar如何去得到日历对象的?

public static Calendar getInstance() : 获取当前日历对象

Calendar日历类创建日历对象的方法:

方法名

说明

public static Calendar getInstance()

获取当前日历对象

 Calendar常用方法

方法名

说明

public int get(int field)

取日期中的某个字段信息。

public void set(int field,int value)

修改日历的某个字段信息。

public void add(int field,int amount)

为某个字段增加/减少指定的值

public final Date getTime()

拿到此刻日期对象。

public long getTimeInMillis()

拿到此刻时间毫秒值

    public void test() {
        Calendar instance = Calendar.getInstance();
        System.out.println(instance);


        /**
         * public int get(int field)	              取日期中的某个字段信息。
         */
        System.out.println("--------------------------------");
        System.out.println("年:"+instance.get(Calendar.YEAR));
        //这个类中  月份会少1  所以加1:
        System.out.println("月:"+(instance.get(Calendar.MONTH)+1));
        System.out.println("一年的第几天:"+instance.get(Calendar.DAY_OF_YEAR));

        /**
         * public void set(int field,int value)	      修改日历的某个字段信息。
         */
        System.out.println("--------------------------------");
        System.out.println(instance);
        //修改月份为11月:
        instance.set(Calendar.MONTH,10);
        System.out.println("年:"+instance.get(Calendar.YEAR));
        //这个类中  月份会少1  所以加1:
        System.out.println("月:"+(instance.get(Calendar.MONTH)+1));
        System.out.println("一年的第几天:"+instance.get(Calendar.DAY_OF_YEAR));
        System.out.println("--------------------------------");
        /**
         * public final Date getTime()	              拿到此刻日期对象。
         */
        Date date = instance.getTime();

        System.out.println(date);
        System.out.println("--------------------------------");

        /**
         * public  long  getTimeInMillis()	拿到此刻时间毫秒值
         */
       Long time= instance.getTimeInMillis()+1000*60*60;
      date.setTime(time);
        System.out.println(date);


    }

 

 注意:calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化。

6.JDK8新增日期类

概述

从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有:

  • LocalDate:不包含具体时间的日期。
  • LocalTime:不含日期的时间。
  • LocalDateTime:包含了日期及时间。
  • Instant:代表的是时间戳。
  • DateTimeFormatter 用于做时间的格式化和解析的
  • Duration:用于计算两个“时间”间隔
  • Period:用于计算两个“日期”间隔

新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。

其次,新API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改。

LocalDate、LocalTime、LocalDateTime

  • 他们 分别表示日期,时间,日期时间对象,他们的类的实例是不可变的对象。
  • 他们三者构建对象和API都是通用的

构建对象的方式如下:

方法名

说明

public static Xxxx now();

静态方法,根据当前时间创建对象

LocaDate localDate = LocalDate.now();

LocalTime llocalTime = LocalTime.now();

LocalDateTime localDateTime = LocalDateTime.now();

public static Xxxx of(…);

静态方法,指定日期/时间创建对象

LocalDate localDate1 = LocalDate.of(2099 , 11,11);

LocalTime localTime1 = LocalTime.of(11, 11, 11);

LocalDateTime localDateTime1 =

LocalDateTime.of(2020, 10, 6, 13, 23, 43);

    public void test() {
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);
        LocalDate date = localDate.of(2088, 2, 14);
        System.out.println(date);


    }

 LocalDate、LocalTime、LocalDateTime获取信息的API:

方法名

说明

public int geYear()

获取年

public int getMonthValue()

获取月份(1-12)

Public int getDayOfMonth()

获取月中第几天

Public int getDayOfYear()

获取年中第几天

Public DayOfWeek getDayOfWeek()

获取星期

    public void test() {
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.println("时间:"+dateTime);
        System.out.println("获取年:"+dateTime.getYear());
        System.out.println("获取月:"+dateTime.getMonthValue());
        System.out.println("获取日:"+dateTime.getDayOfMonth());
        System.out.println("一年中的第几天:"+dateTime.getDayOfYear());
        System.out.println("获取星期:"+dateTime.getDayOfWeek().getValue());




    }

转换相关的API:

 LocalDateTime的转换API

方法名

说明

public LocalDate toLocalDate()

转换成一个LocalDate对象

public LocalTime toLocalTime()

转换成一个LocalTime对象

    public void test() {
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.println("时间:"+dateTime);
        LocalDate date = dateTime.toLocalDate();
        System.out.println("LocalDateTime 转为 LocalDate:"+date);


    }

 修改相关的API

  • LocalDateTime 综合了 LocalDate 和 LocalTime 里面的方法,所以下面只用 LocalDate 和 LocalTime 来举例。
  • 这些方法返回的是一个新的实例引用,因为LocalDateTime 、LocalDate 、LocalTime 都是不可变的。

方法名

说明

plusDays, plusWeeks, plusMonths, plusYears

向当前 LocalDate 对象添加几天、 

几周、几个月、几年

minusDays, minusWeeks, minusMonths, minusYears 

从当前 LocalDate 对象减去几天、 

几周、几个月、几年 

withDayOfMonth, withDayOfYear, withMonth, withYear 

将月份天数、年份天数、月份、

年 份 修 改 为 指 定 的 值 

并 返 回 新 的 LocalDate 对象 

isBefore, isAfter 

比较两个 LocalDate 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱编程的小白白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值