Object 类
含义:所有类的基类/超类,一个类没有明确继承的类,默认继承Object
1、equals:比较两个对象内存地址是否相同
底层源码:
public boolean equals(Object obj){
return this == obj;
}
package com.dream.test01;
public class Test01 {
public static void main(String[] args) {
Object obj1 = new Object();//0x001
Object obj2 = new Object();//0x002
boolean equals = obj1.equals(obj2);
System.out.println(equals);//false
boolean bool = obj1 == obj2;
System.out.println(bool);//false
}
}
2、getclass:获取该类的字节码文件对象
package com.dream.test01;
public class Test02 {
public static void main(String[] args) {
Object obj1 = new Object();//0x001
Object obj2 = new Object();//0x002
Class<? extends Object> c1 = obj1.getClass();
Class<? extends Object> c2 = obj2.getClass();
System.out.println(c1 == c2);//true
}
}
3、hashCode:获取对象的hash值
hash值-系统利用对象的内存地址+散列算法获取的一个值
注意:hash值不等于内存地址
package com.dream.test01;
public class test03 {
public static void main(String[] args) {
Object a1 = new Object();
Object a2 = new Object();
int b1 = a1.hashCode();
int b2 = a2.hashCode();
System.out.println(b1);//366712642
System.out.println(b2);//1829164700
}
}
4、toString:获取对象的字符串表示(将对象转换为字符串)
底层源码:
public String toString(){
return getClass().getName() + “@” + Integer.toHexString(hashCode()); //16进制的hash值
}
package com.dream.test01;
public class Test05 {
public static void main(String[] args) {
Object obj1 = new Object();
//java.lang.Object@15db9742
System.out.println(obj1.toString());
}
}
5、Object标杆作用
知识点:Object标杆作用
equals:判断两个对象是否相同,Object不同的子类判断两个的对象是否相同有不同的判断规则,子类重写equals即可 toString:返回对象的字符串表示,Object不同的子类有不同的属性,重写toString,返回属性
定义一个Student类
package com.dream.test02;
public class Student {
private String name;
private char sex;
private int age;
private String classId;
private String id;
public Student() {
}
public Student(String name, char sex, int age, String classId, String id) {
this.name = name;
this.sex = sex;
this.age = age;
this.classId = classId;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
if(this == obj){
return true;
}
Student stu = (Student) obj;
if(this.classId.equals(stu.classId) && this.id.equals(stu.id)){
return true;
}
return false;
}
@Override
public String toString() {
return "name=" + name + ", sex=" + sex + ", age=" + age + ", classId=" + classId + ", id=" + id;
}
}
调用Student
package com.dream.test02;
public class Test02 {
public static void main(String[] args) {
Student stu1 = new Student("lk", '女', 18, "2107", "001");
Student stu2 = new Student("lk01", '男', 21, "2107", "001");
System.out.println(stu1.equals(stu2));//true
System.out.println(stu1);//lk--女--18--2107--001
}
}