Java常用API——Object类

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方法

猜你喜欢

转载自blog.csdn.net/weixin_43796325/article/details/104498554