一、Object类
Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。
1.1Object类中的方法
/**
* native 方法,用于返回当前运行时对象的 Class 对象,使用了 final 关键字修饰,故不允许子类重写。
*/
public final native Class<?> getClass()
/**
* native 方法,用于返回对象的哈希码,主要使用在哈希表中,比如 JDK 中的HashMap。
*/
public native int hashCode()
/**
* 用于比较 2 个对象的内存地址是否相等,String 类对该方法进行了重写以用于比较字符串的值是否相等。
*/
public boolean equals(Object obj)
/**
* naitive 方法,用于创建并返回当前对象的一份拷贝。
*/
protected native Object clone() throws CloneNotSupportedException
/**
* 返回类的名字实例的哈希码的 16 进制的字符串。建议 Object 所有的子类都重写这个方法。
*/
public String toString()
/**
* native 方法,并且不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个。
*/
public final native void notify()
/**
* native 方法,并且不能重写。跟 notify 一样,唯一的区别就是会唤醒在此对象监视器上等待的所有线程,而不是一个线程。
*/
public final native void notifyAll()
/**
* native方法,并且不能重写。暂停线程的执行。注意:sleep 方法没有释放锁,而 wait 方法释放了锁 ,timeout 是等待时间。
*/
public final native void wait(long timeout) throws InterruptedException
/**
* 多了 nanos 参数,这个参数表示额外时间(以毫微秒为单位,范围是 0-999999)。 所以超时的时间还需要加上 nanos 毫秒。。
*/
public final void wait(long timeout, int nanos) throws InterruptedException
/**
* 跟之前的2个wait方法一样,只不过该方法一直等待,没有超时时间这个概念
*/
public final void wait() throws InterruptedException
/**
* 实例被垃圾回收器回收的时候触发的操作
*/
protected void finalize() throws Throwable { }
1.2 equals()方法
定义:**
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object obj) 指示一些其他对象是否等于此。 |
作用:比较两对象是否相等,对比两对象的内存地址。
1.3 toString()方法
定义:
| Modifier and Type | Method and Description |
|---|---|
String |
toString() 返回对象的字符串表示形式。 |
作用:返回该对象的字符串表示,以字符串表示对象类型+@+内存地址值。
1.4 clone()方法
clone()就是拷贝对象,分为深拷贝和浅拷贝。需要Object类的clone()和java.lang.Cloneable接口配合实现拷贝。
- 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
- 深拷贝 :深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。
二、String类
2.1特性、构造方法、重写equals
构造方法:依据API查询得出以下构造。

重写equals()方法
String重写equals()方法案例:
如何比较两个宠物对象是不是同一个宠物对象?
分析:两宠物对象所有属性值相同判断为同一对象。
class Pet {
private String name;//名称
private Integer health;//健康档案 0-100表示健康程度
public Pet(String name, Integer health) {
this.name = name;
this.health = health;
}
@Override
public boolean equals(Object obj) {
//判断当前调用equals方法的对象和传递进来的对象是否是同一个
if(this == obj){
return true;
}
//判断传递进来的对象是否是Pet类型
if(!(obj instanceof Pet)){
return false;
}
//将obj向下转型为Pet引用,访问其属性
Pet p = (Pet)obj;
return this.name.equalsIgnoreCase(p.name) && this.health ==p.health;
}
}
class Demo{
public static void main(String[] args) {
Pet pet1 = new Pet("大黄",100);
Pet pet2 = new Pet("大黄",100);
System.out.println(pet1.equals(pet2));//输出true,调用的是子类的equals方法
}
}
注意:在重写Object中的equals方法时,一定要注意public boolean equals(Object obj) 的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
区别:
Object类equals方法:对比内存地址值
String类equals方法:对比属性值
特性:String类不可变特性。
字符串是常量,它们的值在创建之后不能更改,即一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但变量中记录的地址值是可以改变的。当重新为str变量赋值时,会在内存中生产一个新的字符串。
2.2字符缓冲区
StringBuffer类、StringBuilder类称为可变字符序列,是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
使用StringBuffer类、StringBuilder类可以实现动态操作字符串。
区别:

三、正则表达式
定义:Regular Expression,在代码中常简写为regex,正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。
3.1规则

String类中涉及正则表达式的方法
String类中提供了matches()方法用于验证正则表达式,另外split()方法和replaceAll()方法中也可以使用正则表达式。
- boolean matches(String regex):判断字符串是否匹配给定的规则
- String [] split(String regex):根据给定正则表达式的匹配规则,拆分此字符串
- String replaceAll(String regex,String replacement):将符合规则的字符串内容,全部替换为新字符串
四、日期类之Date类、Calendar类
4.1Date类
Date 类表示特定的瞬间,精确到毫秒。
构造方法:

常用方法:

4.2Calendar类
Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象,如下:

Calendar类常用方法

注意事项
- 西方星期的开始为周日,中国为周一。
- 在Calendar类中,月份的表示是以0-11代表1-12月。
- 日期是有大小关系的,时间靠后,时间越大。
五、NumberFormat类与DecimalFormat类
5.1NumberFormat类
对数字的格式化,在程序处理中也是非常常用的,例如将数字显示为货币格式、百分百格式等。
java.text.NumberFormat是所有数值格式的抽象基类,该类提供了静态方法获取对象。NumberFormat类提供格式化和解析数值的接口。
常用方法
| 方法 | 说明 |
|---|---|
| getInstance(Locale) | 获取常规数值格式。可以指定Local参数。 |
| getNumberInstance(Locale) | 获取常规数值格式。可以指定Local参数。 |
| getIntegerInstance(Locale) | 获取整数数值格式。可以指定Local参数。 |
| getCurrencyInstance (Locale) | 获取货币数值格式。可以指定Local参数。格式化后的数据前面会有一个货币符号,比如:“¥” |
| getPercentInstance(Locale) | 获取显示百分比的格式。可以指定Local参数。比如:小数 0.53 将显示为 53%。 |
5.2DecimalFormat类
关于更复杂的数字格式化,可以使用java.text.DecimalFormat进行处理,DecimalFormat类是NumberFormat类的子类,该类通过模式字符串对数字格式化,格式符如表
| 格式符 | 作用 |
|---|---|
| # | 代表一个位置数字,如果该位置数字不存在,则省略不显示 |
| , | 代表数字中的分隔符 |
| 0 | 代表一个数字位置,如果该位置不存在,用0来补充,小数中多余部分四舍五入 |
| . | 表示小数点 |
| E | 科学计数法 |
| % | 用百分数表示数字 |
六、Math类
Math类简介
Math 类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数。
类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。如System类.