学习笔记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
- append();追加
- insert();追加
- replace();替换
- delete();删除
BigDecimal类
很多实际运用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal。
注意点:
- BigDecimal使用构造方法时要传入String类型以保证数值的准确性。
语法:
创建方法:BigDecimal bd = new BigDecimal("1.0");
- add();加法
- subtract();减法
- multiply();乘法
- divide();除法
Date类
Date表示特定的瞬间,精确到毫秒,Date类中的大部分方法都已经被Calendar类中的方法所取代。
构造方法
Date()分配一个Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。Date(long date)分配一个Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。
常用方法
- public boolean before(Date when)测试此日期是否在指定日期之前。
- public boolean after(Date when)测试此日期是否在指定日期之后。
- public int compareTo(Date anotherDate)比较两个日期大小。
- 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:
- 系统类

浙公网安备 33010602011771号