常见的API方法之Object(一)

常见的API方法之Object(一)

clone():此方法的用途是用来另存一个当前存在的对象。

public class CloneTest {

   
public static void main(String[] args) throws CloneNotSupportedException {
        People s1 =
new People("yhl", "18");
       
System.out.println("S1的姓名:" + s1.getName() + ",年龄:" + s1.getAge());
       
//使用clone方法实现克隆
       
Object obj = s1.clone();
       
People s2 = (People) obj;
       
System.out.println("S2的姓名:" + s2.getName() + ",年龄:" + s2.getAge());

   
}

   
static class People implements Cloneable {
       
private String name;

        private
String age;

        public
People(String name, String age) {
           
this.name = name;
            this
.age = age;
       
}

       
public People() {
        }

       
public String getName() {
           
return name;
       
}

       
public void setName(String name) {
           
this.name = name;
       
}

       
public String getAge() {
           
return age;
       
}

       
public void setAge(String age) {
           
this.age = age;
       
}

       
@Override
       
protected Object clone() throws CloneNotSupportedException {
           
return super.clone();
       
}
    }
}

 

equals()该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

看看equals()方法在Object类中的定义:

public boolean equals(Object obj){
    
return (this == obj);
}

由上可看见,其比较的是地址。但是在String、Double等封装类中。已经重载了Object的equals()方法。于是才会有equals比较内容,==比较地址的说法。

hashCode()是一个本地方法,返回的对象的地址值。但是,想String等重写了hashCode的方法。固才有两者的关系:

  • 两个obj,如果equals()相等,hashCode()一定相等
  • 两个obj,如果hashCode()相等,equals()不一定相等

String类中重写hashCode ()的代码:

public int hashCode() {

    int h = hash;

    if (h == 0) {

        char val[] = value;

        int len = count;

        for (int i = 0; i < len; i++) {

            h = 31*h + val[off++];

        }

        hash = h;

    }

    return h;

}

Notify()唤醒在此对象监视器上等待的单个线程。如果有多个线程等待,则随机唤醒一个

notifyAll():唤醒在此对象监视器上等待的所有线程
wait在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待
finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收
getClass(): 返回该Object的运行时类
toString(): 方法在打印对象时被调用,将对象信息变为字符串返回,默认输出对象地址

 

 

 
 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值