1、概述
Object是所有类的超类、父类。所有的类都直接或者间接继承自Object。
2、Object类中常用的方法
equals(Object obj)、toString()、getClass()、hasCode()
A、public boolean equals(Object obj)
对对象进行比较,该方法默认比较的是对象的地址。而自定义的对象,比较的地址没有什么意义,所以我们自定义的对象,一般都会重写次方法,完成自己想要比较的内容。
B、public String toString()
将对象按照字符串的格式输出,一般来说这个值对于我们没有意义,所以我们会重写此方法。
C、public final Class<?> getClass()
获取对象的字节码文件
D、public int hasCode()
返回该对象的哈希值
注意:
== 和 equals 的区别?
==操作符专门用来比较两个变量的值是否相等,也就是用户比较变量所以对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个应用变量是否相等,只能用==。如果一个变量指向的数据是对象类型的,那么这时候设计了两块内存,对象本身占用一个内存(堆内存),变量也占用一个内存,
如Object obj = new Object(); 变量obj是一个内存,new Object是另一个,此时变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,若要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时就需要==操作符进行比较。
equals用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的,例如:
String a = new String("foo");
String b = new String("foo");
两条new语句创建了两个对象,然后a,b这两个变量分别指向其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a,b中存储的数值是不同的,
所以表达式a==b将返回false,而这两个对象中的内容是相同的,所以aequals(b)将返回false
字符串的比较基本都是使用equals方法。