Object 类
一、API文档中的Object类
- Object类是类层次结构的根类
- 所有类都直接或间接的继承自Object类
二、Object类中的方法
- public int hashCode():返回该对象的哈希码值(对象的逻辑地址值)
- public final Class<?> getClass():返回此 Object 的运行时类
- public String toString():返回该对象的字符串表示
三、hashCode方法
- public int hashCode():返回该对象的哈希码值(对象的逻辑地址值)
//Student.java
public class Student extends Object {
}
//StudentTest.java
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Student();
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
}
}
***执行结果:***
664740647
804564176
- 默认情况下每个对象在内存中的位置是不一样的,所以hashCode值也不一样
- 让每个对象的hashCode值都一样的方法:重写父类的hashCode方法
//Student.java
public class Student extends Object {
@Override
public int hashCode() {
return 10;
}
}
//StudentTest.java
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Student();
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
}
}
***执行结果:***
10
10
四、getClass方法
- public final Class<?> getClass():返回此 Object 的运行时类
- Class是一种类型,而class是定义类的关键字
- Class类型对应的对象是字节码文件(.class文件)对象
- 在程序运行过程中,同一类创建的对象所使用的是同一份字节码文件
public class StudentTest2 {
public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Student();
Class clazz1 = s1.getClass();
Class clazz2 = s2.getClass();
//在一个程序运行过程中,同一类创建的对象所使用的是同一份字节码文件
boolean boo = clazz1==clazz2;
System.out.println(boo);
//getName()返回的是类的全路径名称
String name = clazz1.getName();
System.out.println(name);
//链式编程,两行代码合二为一
String name2 = s2.getClass().getName();
System.out.println(name2);
}
}
***执行结果:***
true
com.api.object.demo.Student
com.api.object.demo.Student
五、toString方法
- 参考文章《Java常用API——toString方法 & toString方法的重写》
- https://blog.csdn.net/weixin_43796325/article/details/104505318