Object 类类
a) Object 类是所有 Java 类的根基类
b) 如果在类的声明中未使用 extends 关键字指明其基类,则默认基类为 Object 类
toString()
返回该对象的字符串表示。 通常 toString 方法会返回一个 “以文本方式表示” 此对象的
字符串,Object 类的 toString 方法返回一个字符串,该字符串由类名加标记 @和此对象哈
希码的无符号十六进制表示组成
/*
关于Object 中的 toString 方法:
sun在Object类中设计toString方法的目的:返回java对象的字符串的表示形式
在现实开发中,Object里边的toString 方法已经不够用了
Object的toString方法实现的结果 不满意
Object中的toString方法就是要重写的
sun是这样子实现toString方法的
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Object中的toString方法返回: 类名@Java对象的内存地址经过哈希算法得出的int类型值
再转换成十六进制
这个输出结果可以等同看做Java对象在堆中的内存地址
*/
public class ObjectTest01{
public static void main(String[] args){
// 创建一个Object类型的对象
Object o1= new Object();
System.out.println(o1); // java.lang.Object@6af62373
// 调用一个toString方法
String oStr = o1.toString();
System.out.println(oStr); // java.lang.Object@6af62373
// 创建一个Person类型的对象
Person p1 = new Person("Ming",18);
// 调用toString方法
String pStr = p1.toString();
System.out.println("p1 = "+p1.toString());
}
}
class Person{
String name;
int age;
// Person(){} 默认的空构造
Person(String name,int age){
this.name = name;
this.age = age;
}
// 重写toString方法
// 根据项目的需求而定
// 需要显示格式:Person[name=Mingage=18]
public String toString(){
return "Person[name="+name+",age="+age+"]";
}
}
finalize
垃圾回收器(Garbage Collection) ,也叫 GC,垃圾回收器主要有以下特点:
� 当对象不再被程序使用时,垃圾回收器将会将其回收
� 垃圾回收是在后台运行的, 我们无法命令垃圾回收器马上回收资源, 但是我们可以
告诉他,尽快回收资源(System.gc 和 Runtime.getRuntime().gc())
� 垃圾回收器在回收某个对象的时候,首先会调用该对象的 finalize 方法
� GC 主要针对堆内存
� 单例模式的缺点
/*
关于Object中的finalize方法
finalize 方法什么时候调用
1. finalize 方法每一个Java对象都有
2. finalize 方法不需要程序员去调用,有系统自动调用
3. Java对象如果没有更多的引用指向它,则该Java对象称为 垃圾数据
等待垃圾回收器回收,垃圾回收器在回收这个Java对象之前 会自动调用该对象的 finalize方法
finalize 方法是该对象马上就要被回收了,例如:需要释放资源,则可以在该方法中释放
*/
public class FinalizeTest01{
public static void main(String[] args){
People p = new People();
// 没有引用再指向他,等待回收
p = null;
// 开发者只能”建议“垃圾回收器回收垃圾
System.gc();
}
}
class People{
public void finalize() throws Throwable{
System.out.println(this+"马上就要被回收了 !");
// 让引用再次重新指向该对象,该对象不是垃圾数据,不会被垃圾回收器回收 !
People p = this;
}
}
/*
关于Object中的equals方法
public boolean equals(Object obj){
return (this == obj);
}
Object中的equals方法比较的是两个引用的内存地址
Java对象中的equals方法的设计目的: 判断两个对象是否一样
*/
public class EqualsTest{
public static void main(String[] args){
Object o1 = new Object();
Object o2 = new Object();
boolean b1 = o1.equals(o2);
System.out.println(b1);
}
}