Object类:
1 hashCode() 返回对象的整数表示形式(哈希码)
哈希码默认根据对象的地址计算而来。
2 getClass() 返回对象的实际类型
用于判断2个对象的实际类型是否相同
3 toString() 返回对象的字符串表示形式
打印对象会自动调用toString().
在开发时,为了方便的查看对象的属性值,一般地,都会重写toString()
4 equals(Object o) 判断2个对象内容是否相同 【重点】
Object类中equals方法默认实现为判断2个引用是否指向同1对象。
自定义类型要通过equals方法比较内容,必须重写equals,
内置类型如String已经重写过该方法
5 finalize() 在对象销毁时自动执行。
Java中的对象由JVM中的GC(垃圾回收器)自动销毁。
GC是如何判断一个对象是垃圾对象?
没有引用指向的对象一定是垃圾对象
零引用计数法
可达性(跟踪)算法
GC何时回收垃圾对象?
当内存中空间不足时执行
内部类:
定义在类内部的类。
1 可以直接使用外部类的私有成员,而不破坏封装
2 内部类编译之后生成独立的class文件
a 成员内部类(1%)
① 成员内部类对象依赖外部类对象
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
② 成员内部类的实例变量和局部变量同名时可以通过 外部类名.this.实例变量
访问外部类的实例变量。
③ 成员内部类中只能定义实例成员,不能定义静态成员
b 静态内部类(9%)
① 静态内部类中可以定义静态成员也可以定义实例成员
② 静态内部类中不可以直接使用外部类的实例成员
③ 静态内部类不依赖外部类对象
Outer.Inner inner = new Outer.Inner();
c 局部内部类(90%)
① 局部内部类作用范围等同于局部变量,从定义处起到所在的代码块结束
② 局部内部类可以使用外部类的局部变量,但是该变量必须是final的或者是事实最终的。
d 匿名内部类(90%)【重点】
将类的定义、方法的实现、对象的创建合三为一。常用于创建接口实现类对象。
语法:
接口 引用 = new 接口(){
//方法实现
};
父类 引用 = new 父类(...){
//方法实现
};