Object类工具类方法的应用

关于Object类中的finalize

关Fobject类中的finalize():
1.看源码:
protected void finalize() throws Throwable { }
1)protected
2)不需要程序员手动调用的。JVM垃圾回收器进行调用
3) SUN公司准备的一个垃圾回收时机
4)它只需要重写,不需要调用
5)java垃圾回收不轻易启动,垃圾太少、时间没到,都有可能不会启动

关于Object类中的toString():

1.看源码:
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}
类名@对象的内存地址转换成16进制的形式

举例:com.hqyj.demo01.MyTime@75412c2f
重写:MyTime{year=1995, month=10, day=3}
2.Sun公司设计tOString方法的目的?
Java对象转换成字符串,字符串要符合要求,易于理解
3.Sun公司开发Java语言的时候,建议所有的子类都去重写toString方法
向简洁,详实,易阅读的方式重写

关于Object类中的equals():

1.看源码:
public boolean equals(Object obj) {
return (this == obj);
}
2.Sun公司设计equals方法的目的?
判斷两个对象是否相等
3.我们需要研究一下Object类提供的默认的equals方法够不够用?
不够用,要重写!
*/
public class ObjectTest02 {
public static void main(String[] args) {
MyLove l = new MyLove(new String(“易烊千玺”),20,new String(“hip-hop”));
MyLove l1 = new MyLove(new String(“易烊千玺”),20,new String(“hip-hop”));
//System.out.println(l.equals(l1));//FALSE
//重写后:
System.out.println(l.equals(l1));//true
}
}
//我滴爱
class MyLove{
private String name;
private int age;
private String hobby;

public MyLove() {
}

public MyLove(String name, int age, String hobby) {
    this.name = name;
    this.age = age;
    this.hobby = hobby;
}
//Alt+Insert
@Override
public String toString() {
    return "MyLove{" +
            "name='" + name + '\'' +
            ", age=" + age +
            ", hobby='" + hobby + '\'' +
            '}';
}

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof MyLove)) return false;
    MyLove myLove = (MyLove) o;
    return age == myLove.age &&
            Objects.equals(name, myLove.name) &&
            Objects.equals(hobby, myLove.hobby);
}

@Override
public int hashCode() {
    return Objects.hash(name, age, hobby);
}
//equals重写要看具体的业务
/*public boolean equals(Object obj) {
    if(obj==null||!(obj instanceof MyLove)){
        return false;
    }
    if(this==obj){
        return true;
    }
    MyLove t = (MyLove)obj;
    return this.name.equals(t.name)&&this.age==t.age&&this.hobby.equals(t.hobby);
}*/

}

关于Object类中的hashCode():

1.看源码:
public native int hashCode();
返回的是Java对象的内存地址经过哈希算法得出的一个值
等同于看做Java对象的内存地址
*/
public class ObjectTest03 {
public static void main(String[] args) {
Object o = new Object();
System.out.println(o.hashCode());//460141958
MyClass c = new MyClass();
System.out.println(c.hashCode());//1163157884
}
}
class MyClass{

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩成笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值