Object类
- 它是所有类的基类。
public class Person{ }//实际上是public class Person extends Object{ }
Object类的方法
toString方法
- 返回值是一个描述当前对象有关信息的字符串。默认定义是:“类名+@+哈希编码”。
- 推荐每个类对toString方法重写。
public class TestToString{ public static void main(String args[]) { Dog d = new Dog; System.out.println("d:="+d); //系统会调用toString方法 }}class Dog{ public String toString() //重写 { return "I'm a cool Dog!"; }}
哈希编码
- 在Java程序中,会有很多个对象,程序执行的过程中会不断地使用这些对象。
- Java虚拟机就要找到这些对象的地址。显然是不可能在内存中来回搜索。
- 往往采取措施就是,用一张表来记录每个对象的位置,而这张表一般用哈希编码来记录,每个对象都有自己独一无二的哈希编码,根据这个编码就可以很快的确定这个对象的位置。
- 它独一无二的代表了这个对象,还可以通过它来找到这个对象的位置
equals方法
- 判断两个对象是否相同,是返回true,否则返回false。
- 默认比较的根据是对象的地址
- 不满足于这种比较方法,可以重写。
public class TestEquals{ public static void main(String args[]) { Cat c1 = new Cat(); Cat c2 = new Cat(); System.out.println(c1 == c2); System.out.println(c1.equals(c2)); //如果不重写,以上两种写法都是比较地址,换汤不换药 }}class Cat{ int color; int height; int weight; //重写equals方法 public boolean equals(Object obj) //千万不能把形参写成Cat,这不符合重写的原则 { if(obj == NULL) return false; //空引用返回false; else { if(obj instanceof Cat) /判断obj是不是Cat的一个对象 { Cat c = (Cat)obj; //Object对象强制转化为Cat对象 if(c.color == this.color&&c.herght == this.height&&c.weight == this.weight) //比较 { return true; } } } return false; }}
总结
每个类从Object继承的时候,可能继承的Object中的方法已经重写。就比如String类中的equals方法已经重写。