Object类解释
equals方法
==和equals的区别
==:是一个比较运算符
- 既可以判断基本类型也可以判定引用类型。
- 如果判断基本类型,判断的是值是否相等。
- 如果判断引用类型,判断的是地址是否相等(判断是否为同一对象)
equals方法:是Object类中的方法,只能判断引用类型,默认判断的是地址是否相等,子类通常重写该方法,用于判断内容是否相等
hashCode方法
- 返回该对象的哈希码值。支持此方法是为了提高哈希表(例如
java.util.Hashtable
提供的哈希表)的性能。 -
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。
toString方法
基本介绍:默认返回全类名+@+哈希值的十六进制,toString:就是hashCode转为十六进制。
源码
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } // getClass().getName(),表示类的全名即包名+类名 // Integer.toHexString(hashCode()),表示把对象的hashCode值转换为十六进制的字符串
例子
public class min { public static void main(String[] args) { Monster monster = new Monster("妖怪", "巡山", 1000); System.out.println(monster.toString()); } } class Monster{ private String name; private String Job; private double sal; public Monster(String name, String job, double sal) { this.name = name; Job = job; this.sal = sal; } }
重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式。
查看代码
public class min { public static void main(String[] args) { Monster monster = new Monster("妖", "巡山", 1000); System.out.println(monster);// 等价于monster.toString() } } class Monster{ private String name; private String Job; private double sal; public Monster(String name, String job, double sal) { this.name = name; Job = job; this.sal = sal; } @Override public String toString() {//默认重写后是把对象的属性值输出,可自行修改 return "Monster{" + "name='" + name + '\'' + ", Job='" + Job + '\'' + ", sal=" + sal + '}'; } }
finalize的用法
当对象被回收时,系统自动调用该对象的 finalize方法。子类可以重写 finalize方法。
实际开发中几乎不会用到 finalize方法,但是要明白 finalize的运行机制。
查看代码
public class Test { //Finalize的用法 public static void main(String[] args) { Car car = new Car("car"); car = null; // car没有任何引用所以car对象是一个垃圾, // 垃圾回收器就会销毁对象销毁前会调用该对象的finalize方法。在finalize可以重写 System.gc(); System.out.println("程序退出了"); } } class Car{ private String name; public Car(String name) { this.name = name; } @Override protected void finalize() throws Throwable { System.out.println("car类被销毁了"); } }