1,Object类的概述
-
类层次结构的根类
-
所有类都直接或者间接的继承自该类
2,构造方法
-
public Object()
-
子类的构造方法默认访问的是父类的无参构造方法
3,Object类的hashCode()方法
-
public int hashCode()
-
返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
-
不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
package com.xiaoshuai.object;
public class Demo1_HashCode {
public static void main(String[] args) {
Object object = new Object();
int hashCode = object.hashCode();
System.out.println(hashCode);
Student s1 = new Student("张三", 23);
Student s2 = new Student("李四", 24);
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
}
}
-
打印两个不同的地址值
4,Object类的getClass()方法
-
getClass 返回调用者的类名。
-
public final Class getClass()
-
返回此 Object 的运行时类。
-
可以通过Class类中的一个方法,获取对象的真实类的全名称。
-
-
public String getName() 获取名称
package com.xiaoshuai.object;
public class Demo2_GetClass {
public static void main(String[] args) {
Student s = new Student("张三", 23);
// Class clazz = new Class();
Class clazz = s.getClass();
String name = clazz.getName(); //获取该对象的字节码文件
System.out.println(name); // 获取名称
}
}
5,Object类的toString()方法
/**
* @param args
* com.xiaoshuai.bean.Student@bcda2d
* public Stirng toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode())
}
左边 :类名
中间:@
右边:hashCode的十六进制表现形式
这么写没有什么实际意义。
toString方法的作用:可以更方便的显示属性值。
getXxx方法是为了获取值,可以显示也可以赋值,或者其他操作。
Object .toString :
原码: getClass().getName() + "@" + Integer.toHexString(hashCode())
getClass().getName() 是类名。
@
Integer.toHexString(hashCode()) 十六进制的哈希码值
由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
*/
-
public String toString()
-
返回该对象的字符串表示。
【1】重写toString方法
package com.xiaoshuai.bean;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
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;
}
/*@Override
public String toString() {
return "我的姓名是:" + name + ",我的年龄是:"+ age;
}*/
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
最终版
toString 方法我作用。可以跟方便的显示属性值。
getXXX 方法可以显示赋值也可以做其他操作。
直接打印对象的引用。默认会调用toString 方法。
javabean 里面一般都会重写toString方法
6,Object类的equals()方法
-
equals方法,比较两个对象是否相等
@param args
public boolean equals(Object obj){
return (this == obj);
}
Object中的equals方法是比较对象的地址值,没有什么意义,我们 需要重写它。
因为在开发中我们通常比较的是对象中的属性值,我们认为 相同属性是同一个对象,这样我们就需要重写equals方法。
-
重写equals方法
指示其他某个对象是否与此对象“相等”。
默认情况下比较的是对象的引用是否相同。
由于比较对象的引用没有意义,一般建议重写该方法。
重点:==号和equals方法的区别
-
==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
-
equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
public class Demo4_Equals {
public static void main(String[] args) {
// 如果说调用的类,没有重写equals方法的话,那么默认比较的是地址值.
Student s1 = new Student("张三", 23);
Student s2 = new Student("张三", 23);
boolean b = s1.equals(s2); //比较2个对象是否相等
System.out.println(s1 == s2);
System.out.println(b); //重写之后比较的是对象中的属性值
}
}