1. 概述
-
Object类是所有类型的顶层父类,所有类型的直接或者间接的父类;所有的类型中都含有Object类中的所有方法。
-
随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object类。
-
Object类的构造方法:Object()
-
可以自己创建对象
-
让子类访问,所有子类都会直接或者间接的访问到这个顶层父类的构造方法
-
Object类在执行构造方法时,不去访问自己的父类,因为没有父类了
-
2. getClass()
-
返回当前对象的运行时类
-
目前记住其中Class类型中有一个getName方法,可以返回当前类型的全类名
-
示例:
public class Demo { public static void main(String[] args) { Demo demo = new Demo(); System.out.println(demo.getClass()); } }
3. hashCode()
-
根据对象的情况,生成的一个整数,就是哈希码值。生成数字的方法就是hashCode方法。
-
示例:
public class Demo { public static void main(String[] args) { Demo demo = new Demo(); System.out.println(demo.hashCode()); demo = new Demo(); System.out.println(demo.hashCode()); } }
4. toString()
-
对象返回一个地址值的字符串,没有什么意义。
-
打印当前对象成员变量的值
-
示例:
public class Animal {
String username;
String password;
@Override
public String toString() {
return "Animal{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
5 equals()
-
用于比较两个对象是否相等的方法,比较的就是“调用者”和“参数”这两个对象(
boolean equals(Object obj)
) -
性质:
-
自反性:自己和自己肯定是相等,A.equals(A);肯定是true。
-
对称性:A和B相等,那么B就和A相等。A.equals(B)为true,那么B.equals(A)也为true。
-
传递性:A.equals(B)为true,并且B.equals(C)为true,那么A.equals(C)也为true。
-
-
在Object类型中,是比较两个对象的地址值是否相同。
-
实际使用中,比较两个内存地址没有意义,一般会重写
equals
方法,比较值是否相同。 -
示例:
### 5 equals()
* 用于比较两个对象是否相等的方法,比较的就是“调用者”和“参数”这两个对象(`boolean equals(Object obj)`)
* 性质:
* 自反性:自己和自己肯定是相等,A.equals(A);肯定是true。
* 对称性:A和B相等,那么B就和A相等。A.equals(B)为true,那么B.equals(A)也为true。
* 传递性:A.equals(B)为true,并且B.equals(C)为true,那么A.equals(C)也为true。
* 在Object类型中,是比较两个对象的地址值是否相同。
* 实际使用中,比较两个内存地址没有意义,一般会重写`equals`方法,比较值是否相同。
* 示例:
6.== 与 equals的区别
-
相同点:都是用来比较两个变量是否相等
-
不同点:
-
比较内容不同:
-
==:比较任意数据类型,内置数据类型和引用数据类型
-
equals:比较引用数据类型
-
-
比较规则不同:
-
==:内置数据类型比较值,引用数据类型比较内存地址
-
equals:比较内存地址,如重写则按照重写规则进行比较
-
-