Object
一、总结
- Object 是所有类的父类,Object 的父类为 null
二、类
- 所有类的父类
// Object 是所有类的父类,当不知道类型如何接收时,使用Object
public static void stringArray(){
String [] strArray = new String[]{};
test(strArray);
}
// Object 是所有类的父类,当处理Object类型转换时需要判断及校验
public static void test(Object[] objectArray){
}
三、toString()
// 常用方式,优先选第二种
object.toString()
String.valueOf(object)
// 对 obj 有判空处理,防止直接调用 toString 报NPE异常
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
四、equals()
- 基本数据类型:object 的 equals() 与 == 效果相同
public boolean equals(Object obj) {
return (this == obj);
}
- 引用数据类型:一般会重写Object的equals(),子类覆盖父类方法的实现
- equals 比较两个对象是否相同,根据子类中指定的比较规则
- == 比较对象的堆空间存放的地址的首地址
// 子类重写equals方法,重新定义比较规则
public boolean equals(Object anObject) {
// 1.若传入对象为空
if (this == anObject) {
return true;
}
// 2.是否是同一对象 this == anObject 如果是同一对象,直接返回TRUE
// 3.是否是同一类型
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
// 4.众多属性中关键属性是否相同
// 5.如person属性众多,客观上身份证号码相同,即为同一个人
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}