学习笔记16.常用类

常用类

Object类

概述

Object类是一个超类、基类,与所有的类都有之间或间接的父子关系,位于继承树的最顶层。

任何类,如没有书写extends显示继承某个类,都默认继承Object,否则为间接继承

Object类中所定义的方法,是所有对象都具备的方法。

Object类型可以存储任何对象。

  • 作为参数,可接受任何对象。
  • 作为返回值,可返回任何对象。

getClass()方法

public final Class<?> getClass() {}

返回引用中存储的实际对象类型。

应用:通常用于判断两个引用中实际存储对象类型是否一致。

hashCode()方法

public int hashCode() {}

返回该对象的哈希码值。

哈希值:根据对象的地址字符串数字使用hash算法计算出来的int类型的数值

一般情况下相同对象返回相同哈希码

toString()方法

public String toString() {}

返回该对象的字符串表示(表现形式)。

可以根据程序需求重写该方法,如:展示对象各个属性值。

equals()方法

public boolean equals(object obj){}

默认实现为(this == obj),比较来个对象地址是否相同。

可进行重写,比较两个对象的内容是否相同。

finalize()方法

当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。

垃圾对象:没有有效引用指向此对象时,为垃圾对象。

垃圾回收:由GC销毁垃圾对象,释放数据存储空间。

自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。

手动回收机制:使用System.gc(),通知JVM

包装类

什么是包装类

基本数据类型所对应的引用数据类型。

Object可统一所有数据,包装类的默认值是null。

类型转换与装箱、拆箱

8种包装类提供不同类型间的转换方式:

  • Number父类中提供的6个共性方法。
  • parseXXX()静态方法
  • valueOf()静态方法

注意:徐保证类型兼容,否则抛出NumberFormatException异常。

Integer缓冲区

Java预先创建了256个常用的整数包装类型对象。使用valueOf()创建对象时,若数值在-128~127之间,则会之间引用缓冲区中的对象,而不是重新在堆里开辟一个新的空间,节省内存消耗。

String类

注意点:

字符串是常量,创建后不可改变。

字符串字面值存储在字符串池中,可以共享。

String s = "Hello";产生一个对象,字符串池中存储。

String s = new String("Hello");产生两个对象,堆、池各存储一个。

常用方法:

  • public int length():返回字符串的长度。
  • public char charAt(int index):根据下标获取字符,
  • public boolen contains(String str):判断当前字符串中是否包含str。
  • public char[] toCharArray():将字符串转换为数组。
  • public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在。则返回-1。
  • public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
  • public String trim():去掉字符串前后的空格。
  • public String toUpperCase():将小写转成大写。
  • public boolean endWith(String str):判断字符串是否已str结尾。
  • public String replace(char oldChar,char newChar):将旧字符串替换为新字符串。
  • public String[] split(String str):根据str做拆分。
  • equals():比较两个字符串是否相等
  • equalsIgnoreCase()。忽略大小比较。
  • compareTo():比较大小,实际上比较的是他们在编码表里的位置。
  • substring():截取

StringBuffer和StringBuilder

  1. append();追加
  2. insert();追加
  3. replace();替换
  4. delete();删除

BigDecimal类

很多实际运用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal。

注意点:

  • BigDecimal使用构造方法时要传入String类型以保证数值的准确性。

语法:

创建方法:BigDecimal bd = new BigDecimal("1.0");

  1. add();加法
  2. subtract();减法
  3. multiply();乘法
  4. divide();除法

Date类

Date表示特定的瞬间,精确到毫秒,Date类中的大部分方法都已经被Calendar类中的方法所取代。

构造方法

  • Date() 分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。
  • Date(long date) 分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。

常用方法

  1. public boolean before(Date when)测试此日期是否在指定日期之前。
  2. public boolean after(Date when)测试此日期是否在指定日期之后。
  3. public int compareTo(Date anotherDate)比较两个日期大小。
  4. public boolean equals(Object obj)比较两个日期是否相等。

Calendar类

Calendar提供了获取或设置各种日历字段的方法。

构造方法:

protected Calendar():由于修饰符是protected,所以无法直接创建该对象。

其他方法:

  • static Calendar getInstance() 使用默认时区和区域获取日历
  • set(int field, int value) 将给定的日历字段设置为给定的值。
  • get(int field) 返回给定日历字段的值。
  • setTime(Date date) 使用给定的 Date设置此日历的时间。
  • getTime() 返回一个 Date表示此物体 Calendar的时间值(毫秒从偏移 Epoch “)。
  • void add(int field,int amount)根据日历的规则,将指定的时间量添加或减去给定的日历字段。
  • getTimeInMillis() 以毫秒为单位返回此日历的时间值。

SimleDateFormat

SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。

常用的日期和字母:

字母 日期或事件
y
M 年中月份
D 月中天数
H 1天中小时数(0-23)
m 分钟
s
S 毫秒

System类

System系统类,主要用于获取系统的属性数据和其他操作构造方法私有的

常用方法:

System.arraycopy():数组复制

参数:
src:原数组
srcPos:从哪个位置开始复制0
dest:目标数组
dest:目标数组的起始位置
length:复制的长度
System.currentTimeMillis():获取当前系统时间。

System.gc():告诉垃圾回收器回收垃圾。

System.exit();参数为0正常退出jvm,为1非正常退出jvm。

总结

内部类:

  • 在一个类的内部再定义一个完整的类。
  • 成员内部类、静态内部类、局部内部类、匿名内部类

Object类:

  • 所有类的直接或间接父类,可存储任何对象。

包装类:

  • 基本数据类型所对应的引用数据类型,可以使Object统一所有数据。

String类:

  • 字符串是常量,创建之后不可改变,字面值保存在字符串池中,可以共享。

BigDecimal:

  • 可精确计算浮点数。

Date:

  • 特定时间

Calendar:

  • 日历

SimpleDateFormat:

  • 格式化时间

System:

  • 系统类
posted @ 2021-02-22 13:38  Starumi  阅读(81)  评论(0)    收藏  举报