Java语言进阶 #常用API(二) #Day12 #Object类 #时间日期类 #System类 #StringBuilder #包装类

一、Object类

1. toString

在这里插入图片描述
在这里插入图片描述

1.1 重写toString方法

我们希望直接打印出该对象的属性。以这种格式:类名{成员变量名=成员变量值, ...}
在这里插入图片描述

在这里插入图片描述

1.2 重写toString方法总结

上面的代码,可以用快捷键快速插入: Alt Insert
在这里插入图片描述
在这里插入图片描述

2. equals

equals可以比较两个地址值是否相等
在这里插入图片描述

2.1 重写equals方法1

比较地址值和==没有什么区别,所以我们应该重写equals方法,让其可以比较值。
分析一波:

  1. 调用equals有一个隐含的多态,man1和man2实际属于object类
  2. 要知晓对象属性,要使用向下转型
    在这里插入图片描述
  • 再运行一次
    在这里插入图片描述

2.2 重写equals方法2

如果obj不是Person类型呢?对,用instanceof进行判断
在这里插入图片描述

2.3 重写equals方法3

有一些特殊的值,可以直接给出结果,提高程序效率。

  1. null直接返回false即可
  2. 如果对象是本身 直接返回true
    在这里插入图片描述

2.4 重写equals方法总结

上面的代码,可以用快捷键快速插入: Alt Insert
在这里插入图片描述
在这里插入图片描述

2.5 Objects

在这里插入图片描述
这个Objects是个什么鬼?我们用Ctrl点进去看一下源码:
在这里插入图片描述
大致是说,这是一个关于Object类的一个静态工具集。我们再看向equals方法:
在这里插入图片描述

  1. 如果a的地址值直接等于b的地址值,短路返回true
  2. 如果a不等于null时,输出a.equals(b)的值

a.equals(b)有一个缺点。当a为null时,会产生空指针异常。Objects的equals可以防止空指针异常。

二、时间日期类

1. Date

表示特点的瞬间 ,精确到毫秒(ms, 1000ms = 1s)

  • 毫秒值可以对日期时间进行直接计算
  • System.currentTimeMillis()返回一个Long类型数。这个数是从1970-01-01 00:00:00(英国格林威治 标准时间)迄今所经过的毫秒数。(中国属于东八区,要加八小时)
  • 换算关系: 1day = 864E+5

2. Date的使用

构造方法(空参): 显示当前日期
在这里插入图片描述
构造方法(全参): 显示输入的毫秒值对应的时间(L类型)
在这里插入图片描述
转换为毫秒值:
在这里插入图片描述

3. DateFormat

DateFormat是日期时间格式化的抽象类。功能是使Date和String

  • 格式化: 使Date按特定的格式转化为String
    在这里插入图片描述

  • 解析: 按照指定的格式,把String转换为Date
    在这里插入图片描述

3. SimpleDateFormat使用

构造方法: DateFormat是一个抽象类,它有一个直接子类SimpleDateFormat
在这里插入图片描述
格式: 比如==“yyyy年MM月DD日 HH小时mm分钟ss秒”==
在这里插入图片描述

3.1 格式化

  1. 创建对象
  2. 使用format()方法
    在这里插入图片描述

3.2 解析

  1. 创建对象
  2. 使用parse()成员方法
    在这里插入图片描述

4. Calendar

日历类是一个抽象类,它里面有一个很好用的静态方法getInstance()可以直接创建日历对象(返回一个Calendar对象),而不需要通过直接子类
**加粗样式**

4.1 Calendar创建

在这里插入图片描述

4.2 Calendar常用方法

4.2.1 get方法

获取指定字段的值,比如年份,月份
在这里插入图片描述
int field: Calendar类对象,可以使用Calendar类静态成员变量获取(以下来自Calendar源码):

PS: 其实就是代号
在这里插入图片描述
在这里插入图片描述
注意: 这里面的月份是从0开始的

4.2.2 set方法

设置指定字段的值
在这里插入图片描述
在这里插入图片描述


set有一个重载形式: set(年, 月, 日)
在这里插入图片描述

4.2.3 add

给指定的字段,增加/减少指定的值
在这里插入图片描述
在这里插入图片描述

4.2.4 getTime

把日历对象,转换为日期对象
在这里插入图片描述
在这里插入图片描述

三、System类

System用以获取系统相关信息或进行系统级操作
在这里插入图片描述
System不能被实例化,同时拥有许多可以直接使用的静态方法

1. currentTimeMillis

常用该方法,记录程序运行时间。

  • (对程序进行优化时,可以根据各部分的耗时和理想耗时的差距,确定优化方案)
  • (可以进行时间复杂度对比)
    在这里插入图片描述
    在这里插入图片描述

2. arraycopy

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、StringBuilder

StringBuilder又称为字符串缓存区
在这里插入图片描述

1. 为什么要使用StringBuilder

  • 字符串底层是被final修饰的数组,所以它不可变
private final byte[] values;
  • 进行字符串的相加,内存中就会产生多个字符串,占用空间多,效率低下

在这里插入图片描述


StringBuilder字符串缓存区,可以提高字符串的操作效率。(可以理解为可变字符串)

  • 底层也是数组,但是没有被final修饰
byte[] value = new byte[16];  // 初始容量是16

在这里插入图片描述
可以看到,StringBuilder自始至终就一个数组(StringBuilder容器),占用空间少,效率高(超过16会自动扩容)

2. 构造方法

在这里插入图片描述

3. append方法

追加方法,返回本身(所以直接调用就行,不用接收返回值)
append(Object vlue)
在这里插入图片描述
接收任意对象作参数:
在这里插入图片描述
返回值是本身的,可以使用链式编程:
刚才那些代码,可以写成这样
在这里插入图片描述

4. toString

StringBuilderSting可以相互转化

  1. 构造方法: Sting --> StringBuilder
    在这里插入图片描述
  2. toString: StringBuilder --> Sting
    在这里插入图片描述

五、包装类

还记得ArrayList只能接收引用数据类型时,我们是怎么传递基本数据类型的?答,使用对应的包装类

1. 什么是包装类

包装类: 基本数据类型虽然使用方便,但是并没有对应的方法来操作这些数据。于是,可以使用一个类,把基本数据的类型装起来,在类中定义一些方法,这个类就叫包装类

包装类在java.lang包下,不需要导包
=+对应的包装类 = 基本数据类型 + 对应的操作方法

基本类型(基本类型) 包装类(引用类型)
byte Byte
short Short
int Integer
long Long
floot Floot
double Double
char Character
boolean Boolean

2. 装箱与拆箱

装箱: 基本类型 --> 对应的包装类
拆箱: 包装类 --> 对应的基本类型

下面以Integerint为例

2.1 装箱

装箱,可以采用构造方法或成员方法

  • 构造方法:
    在这里插入图片描述
    注意: 第二个构造方法,传入的是诸如"100"之类的字符串。如果是"a",则会报错。
  • 成员方法: 静态方法直接使用
    在这里插入图片描述
    在这里插入图片描述

划线,表示该方法已废弃

2.2 拆箱

拆箱,只有一个方法
在这里插入图片描述
在这里插入图片描述

3. 自动装箱与拆箱

JDK1.5之后,基本数据类型和包装类之间,可以互相自动地拆箱和装箱。
在这里插入图片描述

4. 基本类型和字符串相互转化

4.1 基本类型 --> 字符串

  1. 基本类型加上一个空字符串(工作中常用)123+""123 + ""
  2. 包装类的静态方法toString(不是Object类的,是重载后的)
  3. String类的valueOf静态方法

在这里插入图片描述

4.2 字符串 --> 基本类型

使用包装类型的静态方法,parseXXX()
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章