1
Object类中常见方法
(1)哪找
源代码当中,java的类库当中的帮助文档
(2)API
应用程序编程接口
(3)哪几个方法(部分)
- protected Object clone()//负责对象克隆
- int hashCode()//获取对象哈希值的一个方法
- Boolean equals(Object obj)//判断两个对象是否相等
- String toString()//将对象转化成字符串形式
- protected void finalize()//垃圾回收器负责调用方法
2
object 类中toSting()方法
(1)源代码长什么样?
public String toString(){
return this.getClass().getName()+"@"+Integer.toHexString(hashCode());
}
(2)源代码toString()的默认实现
类名@对象的内存地址转换为十六进制的形式
(3)
toString的设计目的:通过调用这个方法可以将一个“java对象”转换成“字符串形式”
简洁的,详实的,易阅读的
(4)
输出引用的时候,会自动调用该引用的toSting()
System.out.println(sl);
3
object中的equals方法
(1)方法equals的源代码(默认代码实现)
public boolean equals(Object obj){
return (this==obj);
}
(2)判断java对象是否相等,不能使用“==”,因为“==”比较的是两个对象的内存地址
(3)辅助理解示例:
public class Text {//测试
public static void main(String[] args) {
Mytime t3=new Mytime();//创建对象
t3.name="zansan";
Mytime t4=new Mytime("zansi");
Mytime t5=new Mytime("zansan");
System.out.println(t3.equals(t4));//false
System.out.println(t3.equals(t5));//true
}
}
class Mytime{//定义我的一个类
String name;
public Mytime(){}
public Mytime(String name){
this.name=name;
}
public boolean equals(Object obj){
String name1 = this.name;//获取第一个
if(obj instanceof Mytime){//获取第二个
Mytime t=(Mytime) obj;
String name2=t.name;
if(name1==name2){
return true;
}
}
return false;
}
}
//高级版,摘抄
public boolean equals(Object o){
if(this==o)return true;
if(o==null||getClass()!=o.getClass())return false;
Mytime m1=(Mytime) o;
return name==m1.name;
}
(4)String类
已经重写了equals方法,比较两个字符串不能使用==,必须使用equals,equals是通用的
已经重写了toString方法
4
object中的finalize()方法
(1)在object类中的源代码
protected void finalize() throws Throwable{}
(2)finalize()方法只有一个方法体,里面没有代码,而且这个方法是protected修饰的
(3)执行时机:
当一个Java对象即将被垃圾回收器回收时,垃圾回收器会负责调用finalize()方法
(4)观察对象销毁时机
(5)静态代码段的作用:
static{}
在类加载的时候执行,并且只执行一次。
5
hashCode方法
(1)在Object中的hashCode方法
public native int hashCode();
这个方法不是抽象方法,带native关键字,底层调用c++
(2)hashCode方法返回值是哈希码
实际Java对象的一个内存地址,经过哈希算法,得出的一个值。执行结果约等于内存地址
(3)辅助理解
public static void main(String[] args) {
Object o=new Object();
int hashCodeValue=o.hashCode();
//对象内存地址经过哈希算法转换的一个数字。等同于内存地址
System.out.println(hashCodeValue);
}