【JAVA进阶】常用API

news2024/10/8 22:13:27

📃个人主页:个人主页

🔥系列专栏: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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kettle(二)数据同步、迁移(基础版)

目录 1.配置源数据库A 1.1 文件-->数据库连接 1.2 配置数据库,选择自己的数据库并配置。 1.3 数据库配置可能会报错,原因是缺少数据库驱动 2.配置目标数据库(与源数据库一致) 3.数据迁移(举例) 3.…

IntelliJ IDEA的代码搁置功能

使用场景 当遇到需要临时修改的 bug,但当前正在开发的内容不能删掉,这个时候就需要把当前已经开发的代码另外保存下来(即保存现场),当把 bug 改完后再恢复,来回归之前的开发工作,IntelliJ IDEA…

数据可视化系列-02各类图表的综合使用介绍及实践

文章目录3.各类图表的综合使用介绍及实践3.1了解数据功能图1、可视化中的数据2、基于数据的研究3、数据的可视化组件4、可视化图表的作用、制作流程和类型3.2北极星指标展示1、指标类知识回顾:指标类简介、指标类主要场景2、指标类图表:指标看板、指标趋…

Win11的两个实用技巧系列之更新进度条不动的三种解决方法、重置失败未做更改五种解决方法

目录 Win11更新进度条不动怎么办?Win11更新进度条不动的三种解决方法 方法一: 方法二: 方法三: Win11重置失败未做更改怎么办?Win11重置失败未做更改五种解决方法 方法一、重新启用Windows RE 方法二、使用SFC修复系统文件 方法三、从恢复…

java忽略证书验证(兼容http,https)

概述 日常上传、下载文件时可能有不需要验证证书的场景,比如证书过期、不正确之类的也可以正常的上传下载文件。 Java中使用https协议时,是通过X.509证书进行校验的。 首先我们先了解下什么是X.509证书。 什么是X.509证书 X.509是公钥基础设施&#x…

k8s部署prometheus

k8s部署prometheus 1.下载prometheus文件 cd /soft/src git clone -b release-0.5 --single-branch https://github.com/coreos/kube-prometheus.git2.部署 这里部署之前最好改一下alertmanager-alertmanager.yaml这个文件,将replicas:改成2或者3,当为…

Spark 3.0 - 17 ML PCA 主成分分析理论与实战

目录 一.引言 二.PCA 理论 1.主成分分析定义 2.数学基础 A.数据归一化 B.协方差矩阵计算 C.计算协方差矩阵的特征向量和特征值,以识别主成分 D.构造特征向量矩阵 E.沿着主成分轴重新计算数据 三.PCA 实战 1.数据准备 2.PCA 初始化 3.数据降维 四.总结 …

举一反三-自建zabbix监控php

php-fpm监控需要通过nginx服务。因此需要开启相关配置。 php-fpm如果是yum安装的,那么在/etc/php-fpm.d/www.config中编辑如下选项: pm.status_path /php_status 保存并退出编辑。重启php-fpm服务。 接下来编辑nginx配置项。编辑如下: l…

Linux下cal命令C/C++实现(显示日历信息)

大多数用户自然会将计算机上的日历视为GUI应用程序,或直接从桌面显示的东西。但也可以在Linux中使用cal命令通过命令行终端查看日历。 如果您通常使用Linux上的桌面环境,或者您来自Windows或MacOS操作系统,可能会认为这是一种过于复杂的日历…

RFID技术在固定资产管理中的作用

固定资产因具有数量庞大、分布广、变动频繁等特点造成管理难度较大,一直成为企业管理的一大重点。固定资产管理包括资产的新增、调拨、闲置、报废、维修、盘点等操作,让投入使用到报废退出使用的全过程进行全面的信息化管控。以往固定资产的一直由于管理…

AlexNet详解

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 ✨完整代码在我的github上,有需要的朋友可以康康✨ GitHub - tt-s-t/Deep-Learning: Store some of your own in-depth …

Python学习笔记——起步

Python 2 和 Python 3的区别 一、维护及版本更新不同 官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新 。 因为python2官方不再维护且python3的广泛使用,很多新的算法包、AI包等其他功能模块包都是基于python3开发的,p…

LaTeX使用方法

1.工具 1.生成表格:LaTeX Tables Editor 2.生成公式:Online LaTeX Equation Editor 、texmath demo、在线LaTeX公式编辑器-编辑器 2.技巧 1.插入图片: \begin{figure}[t] %t表示图片置顶,h表示指定位置,b表示置底…

条件分支if和else的使用详解

顺序结构没什么好讲的,就是从上到下的写代码,所以接下来,壹哥就直接带各位来学习分支结构里的条件分支。我们在前面说过,分支结构,或者叫做条件分支,其实有两种情况。一种是if...else...类型的条件分支&…

vue组件通信6种方式总结(常问知识点)

前言 在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的 Vuex 状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用 Vuex 往往会比较重,本文将系统的罗列出几种不使用 Vuex&#xff…

X.509证书详解

概述 X.509是公钥基础设施(PKI)的标准格式。X.509证书就是基于国际电信联盟(ITU)制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份,保护数据传输安全。X.509证书无处不在&#xff0c…

Spring之底层架构核心概念-过滤器

文章目录1.excludeFilters:排除过滤器2.includeFilters:包含过滤器3.问题:spring为什么能通过是否有Component注解来判断是否需要去注册bean呢?3.1 看源码3.2 原因4.总结1.excludeFilters:排除过滤器 用excludeFilters排除UserService 这个类后&#xf…

nature级别图表:单细胞转录组细胞比例统计可视化函数

单细胞转录组细胞比例: 关于单细胞比例的计算和作图我们之前出过3期,单细胞比例的展示是很多单细胞文章必不可少的内容:跟着Cell学单细胞转录组分析(六):细胞比例计算及可视化 相信跟着学习的小伙伴已经掌握了。最近学习一篇《nature medici…

JavaScript 数组-概念,创建数组,遍历数组,新增元素

JavaScript 数组-概念,创建数组,遍历数组,新增元素 目录JavaScript 数组-概念,创建数组,遍历数组,新增元素1. 数组的概念2. 创建数组2.1 数组的创建方式2.2 利用 new 创建数组2.3 利用数组字面量创建数组2.…

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)

模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序) 目录 模式分类识别 | BiLSTM双向长短期记忆神经网络数据多特征分类预测(Matlab完整程序)分类结果基本介绍程序设计参考资料分类结果