目录
- API
- Object类
1. API
- API(Application Programming Interface):应用程序接口
- Java API是Java提供给我们使用的类,我们只需要学习里面封装功能,灵活取用,完成业务功能;
- Java API的两个最基本的包:
- 语言包(java.lang)
- 实用包(java.util)
2.Object类
2.1 Object类概述
Object类是顶层父类,所有的类,都是直接或者间接的继承它;
2.2 Object类适用场景
任何情况,任何引用类型都可以直接调用Object类中的方法;
2.3 Object类中部分方法
2.3.1 hashCode()方法
- 返回该对象的哈希码值。默认情况下,会根据对象的地址来计算;但是不能说是地址值,只能保证相同类的不同实例返回的值是不同的;
- 格式:
public int hashCode();
2.3.2 getClass()方法
- 获取类的类对象;
- 可以通过class类中的一个方法,获取对象的真是类的全名称;
//返回的是一个类对象(Class 对象);
//jvm在类加载时,会为每个类生成一个Class<A>的Class对象在Java堆中,
//每个A类型的实例都要通过这个Class对象来进行实例化,所以这个Class对象
//是唯一的,且只有第一次加载的时候才会生成;
public final Class<?> getClass();
2.3.3 toString()方法
- 默认返回className+@+hashCode的十六进制形式
- 由于默认情况下的数据对我们来说没有意义,所以一般建议重写该方法;一般重写是将该类的所有的成员变量组成返回即可;
public String toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
2.3.4 equals()方法
先提及 == 符号;
-
== 符号的功能
- 对于基本类型:比较的是值;
- 对于引用类型:比较的是地址;
-
== 符号的优点
- 不会抛出NullPointerException;
- 在编译器检测类型兼容性;
- 速度很快;
-
== 符号的使用场景
- 比较基本类型时;
- 可以直接比较地址的情况;
-
equals概述:
-
equals() 是 Object类的方法,只能比较引用数据类型,比较的是两个对象的地址值是否相同;
-
默认equals比较的是两个对象的地址值,比较意义不大,所以需要重写;
- 不需要重写equals的情况;
- 类的每个实例本质上是唯一的;(不理解)
- 类是私有的,可以确定它的equals()方法永远不会被调用;
- 不需要进行类之间的比较;
- 需要重写equals的情况:
- 想自定义对象比较的逻辑时,而不是地址;
- 一般重写的时候,都是选择使用集成环境自动生成,然后在进行微调;
- 不需要重写equals的情况;
-
优缺点
-
优点:
-
可以自定义逻辑,比较灵活;
-
提高效率;
-
提高健壮性(instanceof);
-
instanceof:判断一个对象是不是该类型的一个引用;
obj instanceof student;
-
-
-
缺点:当调用对象为null时,会抛出NullPointerException异常;
-
-
2.3.5 clone()方法
- 目的:快速创建一个已有对象的副本;
- 分类:
- 浅克隆:只克隆地址值,不克隆空间;
- 深克隆:地址值和空间均克隆;
- 使用:clone()是一个受保护的方法,为了使用clone方法,类必须实现继承标记接口Cloneable,子类重写的方法是改修饰符protected为public,重写逻辑还是用父类的;