Object是long包的类,是所以类的根类,包括数组
- 在这个类上的所以方法,会被继承到所以的类和数组中
- 设计者意图:只要是类就应该具有的方法都会无条件定义在Object中,所以这些方法的重要性和常用性一定是共用性最强的
- Object类中每个方法的使用:
- getClass()——Java进阶阶段“反射”
- hashCode()——Java集合框架
- equals()——比较两个物理位置不同的同类型对象是否内容相同
-
由于Object是根类,所以无法确认每个自定义子类的比较规则,只能采用“==”方法,因此equals需要每个自定义的子类进行重写
-
误区:
-
1、不是每个属性相等,equals方法就会返回true。equals相等为“业务相等”
-
2、遗留问题——equals方法的重写,往往需要配合hashCode方法的重写
- clone()——Java进阶“原型模式”
- toString()——返回对象的字符串描述
-
Object中,返回的是形如:“类的限定名@16进制哈希值”
-
“类的限定名”说明这个对象属于哪个数据类型的
-
“16进制哈希值”可以看作对象的引用,即对象所在的位置
-
在自定义类型中,为了看到更详细的自定义对象描述,toString需要每个自定义的子类进行重写
- finalize()——销毁对象(Java在Object中写好销毁对象的实现,放在finalize中,GC会调用这个算法处理没有引用指向的对象)
-
知道其存在和作用即可,往往在实现过程中不需要重写,也不需要调用,如果要重写,要加上super.finalize();的代码
-
调用交给GC去自动调用
- final:除了定义常量外,还是类和方法的“最终的,不能够变化的”
-
1、变量不能修改 2、类不可被继承(终态类) 3、方法不能被改变(不包括构造方法)
-
final int max = 100;
-
public final void test(){ }
-
public final class Student{ }
- wait()——Java进阶“多线程”
- notify()——Java进阶“多线程”
- notifyAll()——Java进阶“多线程”