012-Object类

Posted 难解的题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了012-Object类相关的知识,希望对你有一定的参考价值。


一、Object类


一、说明

  java 中任何一个类默认继承Object,就算没有直接继承,最终也会间接继承,因此 Object 类的方法都是所有子类通用的;


二、Object类常用方法(其他的可查阅API)

  1. protected Object clone() // 负责对象克隆的;
  2. int hashCode() // 获取对象哈希值的一个方法;
  3. boolean equals(Object obj) // 判断两个对象是否相等;
  4. String toString() // 将对象转换成字符串形式;
  5. protected void finalize() // 垃圾回收器负责调用的方法

三、toString()方法

  [修饰符列表] abstract class 类名{
    类体;
  }

一、toString()方法的源码

  public String toString() {
   return this.getClass().getName() + "@" + Integer.toHexString(hashCode());
   }
  源代码上 toString() 方法的默认实现是:类名@对象的内存地址转换为十六进制的形式

// 定义一个类
public class Student {    
}
public class test {

    public static void main(String[] args) {
        Student student = new c();
        System.out.println(student.toString());
        //输出的是:com.test.Student@28f67ac7
    }

}

二、设计toString()方法的作用

通过调用这个方法可以将一个“java对象”转换成“字符串表示形式”;

三、注意

输出引用类型的值时,会自动调用该引用的toString()方法;
建议所有的子类都去重写toString()方法;

// 定义一个类
public class Student {   
 //重写toString方法
 @Override
    public String toString() {
        return "Student{重新toString方法}";
    } 
}
public class test {

    public static void main(String[] args) {
        Student student = new c();
        System.out.println(student.toString());
        //输出的是:Student{重新toString方法}
    }

}

四、equals()方法

一、equals()方法的源码

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

二、equals()方法作用

  equals方法是判断两个对象是否相等的;

三、重写equals()方法

  在 Object 类中的 equals 方法当中,默认采用的是“= =”判断两个java对象,是否相等。而当使用“= =”去判断两个 java 对象时,判断的是两个 java 对象的内存地址,但是我们应该判断两个 java 对象的内容是否相等。所以 Object 类的 equals 方法不够用,需要子类重写 equals。

五、finalize()方法

一、在Object类中的源代码:

  protected void finalize() throws Throwable { }
  GC:负责调用finalize()方法。

二、调用方式

  这个方法不需要我们去手动调用,JVM 的垃圾回收器负责调用这个方法。不像 equals()、 toString(),equals() 和 toString() 方法是需要你写代码调用的。finalize() 只需要重写,重写完将来自动会有程序来调用;

三、使用时机

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

注:finalize() 方法实际上为我们提供了一个时机,垃圾销毁时机,如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中。


写在最后

以上关于 Object类 中 部分方法的使用介绍,后续如果有时间的话我也将持续更新,如果有错误或者是哪里不足的地方,欢迎各位大大提出宝贵的意见呀~

此外,想了解关于 Object 类 中 其他方法的使用方法可以关注下方公众号,后台回复 “Object” 即可获取,期待着您的光临~

在这里插入图片描述



相关链接:

链接: 011-面向对象进阶(final关键字,抽象类,接口).
链接: 010-面向对象三大特性.
链接: 009-了解面向对象.

以上是关于012-Object类的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch代码片段,及工具类SearchEsUtil.java

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

为啥片段类应该是公开的?

片段内部静态类和gradle问题

从片段类中的对话框添加项目到recyclerview。

如何从片段内的列表视图打开链接网址?