Object类
Object类是java类库中一个较为特殊的类,他是所有类的父类。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类(可省略)
那么就是可以认为
public class Test{…}
与
public class Test extends Object{…}
是等价的。
而object还有许多方法,具体可查api文档
其中,hashCode()、toString()、equals() 方法和 getClass() 方法在 Java 程序中比较常用。
hashCode()方法
hashCode() 方法用于获取对象的 hash 值。
返回的是一个对象的哈希码值,默认会根据一个对象的地址值来计算
不同对象的哈希值不同,同一对象的哈希值一定相同
toString()方法
toString() 方法返回该对象的字符串,当程序输出一个对象或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。
其源代码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回的为一个getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
所以默认返回对我们来说没有任何意义,我们一般将其重写返回我们所需要的
举个例子:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "姓名:" + this.name + ":年龄" + this.age;
}
public static void main(String[] args) {
Person per = new Person("张三", 3);// 采用有参构造实例化Person对象
System.out.println( per);// 打印对象调用toString()方法
}
}
equals()方法
equals方法也是使用较为广泛的一个方法,用于比较两个对象是否相等。
即:用于判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。
一般我们将其重写比较对象中的值是否相同
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//比如子类Student 他想比较 两个对象的成员变量的值是否一样,如果一样就是true ,不一样就是false
//s1.equals(s2);
@Override
public boolean equals(Object obj) { //Object obj=s2; 多态 Object obj=new Dog();
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
//instanceof 判断该对象或者该引用,是不是该类型的一个引用。
if (!(obj instanceof Student)) {
return false;
}
//向下转型
Student s2 = (Student) obj;
//例如两个对象的值都为 张三 23
//23==23
//"张三"=="张三" 这里要注意:String类是引用类型,你用 == 号来比较,比较的是两个字符串的地址值是否相等。
//而你现在想比较的是,两个字符串,字面上的内容是否相同,就不能用==号来比较,而是调用字符串的equals方法来比较,他才会比较两个字符串,字面上的内容是否相同
//"张三".equals("张三") 这里字符串String中也重写了equals方法可以直接使用比较
return this.age == s2.age && this.name.equals(s2.name);
}
}
getClass()方法
getClass() 方法返回对象所属的类,是一个 Class 对象。通过 Class 对象可以获取该类的各种信息,包括类名、父类以及它所实现接口的名字等。
可以通过Class类中的一个方法,获取对象的真实类的全名称。public String getName()