- Object类是所有java类的根父类。
- 如果没有显式指明一个类的父类,那么它的父类是 java.lang.Object 。
- Object类中的功能具有通用性:没有定义属性,构造器只有一个空参构造器。
常用方法:
1. finalize():在对象被回收前会调用此方法。
2. equals(Object obj):比较两个对象是否相等。
(1) == 运算符
基本数据类型的比较时比较两个变量保存的数据是否相等,类型不一致也可能相等。引用数据类型的比较时比较地址值是否一致。
int i = 10;
double d = 10.0;
char c = 10;//Ascll码为10.注意与 c = '10'区分
System.out.println(i == d);//有自动类型提升
System.out.println(i == c);
输出:
true
true
(2)equals()方法
方法需要通过对象调用,即类的对象才能调用,类属于引用数据类型,因此equals方法只能用于引用数据类型的比较。
String类型对equals进行重写,比较的是实体内容,因此
String s1 = "abc";
String s2 = "abc";
System.out.println(s1.equals(s2));
输出:
true
和String类似的类还有:Date、File、包装类。
**Object类中的equals()**本质是判断 a == b,即判断地址值,因此:
Customer c1 = new Customer();
Customer c2 = new Customer();
System.out.println(c1.equals(c2));
输出:
false
<1>⭐自定义类重写equals,使方法比较实体内容而非地址值。
例如对类Customer的equals()进行重写:
class Customer{
int age;
String name;
public boolean equals(Object obj){
}
}
如果是同一个对象:直接返回true。即
if(this == obj){
return true;
}
两个对象是同一类:
if(obj instanceof Customer){
Customer cust = (Customer)obj;
//对两个对象所有属性进行比较
return this.age==cust.age && this.name.equals(cust.anme);
}
不是同一类:返回false
else{
return false;
}
<2>自动生成的equals()
Source–>Generate hashCode() and equals()…
3. toString():
作用:输出地址值。
当输出一个对象的引用时,实际是调用了toString()。
String类型重写toString(),类似的还有Date、File、包装类等。
<1>自定义重写toString()
需要什么就return什么即可。
<2>自动生成的toString()
Source–>Generate toString()…
4.其他方法
-
getClass()
-
hashCode()
-
clone()
-
wait()
-
notify()
-
notifyAll()