8.认识Object类
- 什么是Object类
- 类层次结构的根类
- 所有类都直接或间接继承自该类
- 它的常用属性与方法
-
finalize():回收对象时调用此方法
protected void finalize()
throws Throwable
{} -
getClass():获取对象字节码描述类
public final native Class<?> getClass(); -
hashCode():获取对象哈希值,实际是对象在内存十进制的表示
-
toString():返回对象字符串表示形式
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());//转换成16进制表示
}
当然这种输出意义不大,通常会重写此方法,让他输出类成员信息 -
equals(Object paramObj):比较两个对象内存地址是否相等,底层是用判断的
public boolean equals(Object paramObject)
{
return this == paramObject;
}
一般会重写equals方法,不然与无区分
1.字符串重写此方法后:用于判断两字符串内容是否相同
public boolean equals(Object paramObject)
{
if (this == paramObject) {
return true;
}
if ((paramObject instanceof String))
{
String str = (String)paramObject;
int i = value.length;
if (i == value.length)
{
char[] arrayOfChar1 = value;
char[] arrayOfChar2 = value;
for (int j = 0; i-- != 0; j++) {
if (arrayOfChar1[j] != arrayOfChar2[j]) {
return false;
}
}
return true;
}
}
2.对象重写equals方法,可按值比较
/**
* 按 value 比较
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
EnumEmergencyPlanLevel other = (EnumEmergencyPlanLevel) obj;
if (value == null) {
if (other.value != null)
return false;
} else if (!value.equals(other.value))
return false;
return true;
} -
equals()与==的区别
- 前者只能比较引用数据类型
- 前者可以根据需要重写
- 后者比较值类型时,比较的值是否相同
- 后者比较引用数据类型时:比较的是内存地址是否相同(即是否是同一对象)
-