Java常用API——Object类

Object 类

一、API文档中的Object类
Java常用API——Object类_第1张图片

  • 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

你可能感兴趣的:(#,Java,API,java,Object)