Object常用方法及详解

Object

JDK类库中的老祖宗类。

常用的方法有

  1. clone():负责对象克隆的

  2. equals():判断两个对象是否相等

    所有类的equals()方法都要重写,因为Object中的equals方法使用的是==,比较的是两个对象的内存地址,我们比较内容需要重写。

    基本类型判断使用"=="判断,引用类型判断时使用equals方法

    //源代码
    public boolean equals(Object obj){
        return(this == obj);
    }//以上是Object类的默认实现
    

    通过equals方法来判断两个对象是否相等。没有经过重写的equals方法是用==判断的

    判断两个基本数据类型的数据是否相等可以直接使用==.

    int a=100;int b=100;
    System.out.printlin(a==b);
    
    ==和equals的区别

    ==判断的是内存地址,判断两个对象是否相等时,会比较判断引用保存的对象内存地址是否相等,在使用equals判断两个对象是否相等时,未修改的原方法会通过“”来判断两个对象,故不够用,需要重写equals方法来达成判断内容的效果,传入比较的对象时,通常需要强制类型转换,一般生成equals方法时都已经经过处理。

    MyTime t1=new MyTime(2019);
    MyTime t2=new MyTime(2019);
    System.out.printlin(t1==t2);//结果为false
    //重写MyTime中的equals方法来实现判断内容相同的功能,可以使用IDEA自动生成
    public boolean equals(Object obj){
        if(obj instanceof MyTime){//注意强制类型转换
            MyTime t=(MyTime)obj;
             if(this.year==t.year){
           		 return true;
       		 }
        }
        return false;
    }
    class MyTime(){
        int year;
        public MyTime(){}
        public MyTime(int year){this.year=year;}
    }
    
  3. finalize():垃圾回收器

    这个方法是protected修饰的,源代码是

    protected void finalize()throws Throwable{}
    
    • finalize()方法只有一个方法体,里面没有代码,不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法

    • finalize()方法的执行时机:当一个java对象即将被垃圾回收器回收的时候,垃圾回收器即GC负责调用finalize()方法

    • 若希望在对象销毁时机执行一段代码,这段代码要写到finalize()方法中

    • 与之对应的是静态代码块

      static{

      }静态代码块是在类加载时调用,并且只执行一次

    • java中的垃圾回收器不是轻易启动的,垃圾太少,或者时间没动,种种条件下,有可能启动,也有可能不启动

    项目开发中有这记录释放时间的需求,负责这段记录的代码写到finalize()方法中

  4. hashCode():获取对象哈希值

    源码是

    public native int hashCode();//带有native关键字,底层调用C++程序
    

    hashCode()方法返回的是哈希码:

    实际上就是一个java对象的内存地址,经过哈希算法,得出的一个值。

    所以hashCode()方法的执行结果可以等同看做一个java对象的内存地址。

  5. toString():将对象转换成字符串形式

    所有类的toString方法尽量重写

    越简单越明了越好

    //源代码
    public String toString(){
        return this.getClass().getName()+"@"+Integer.toHexString(hashCode());
    }
    

    作用是将一个java对象转换成字符串返回。默认返回类名加上对象在内存中的十六进制地址。

    System.out.println()输出引用时,会自动调用引用的toString()方法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值