012-Object类
Posted 难解的题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了012-Object类相关的知识,希望对你有一定的参考价值。
一、Object类
一、说明
java 中任何一个类默认继承Object,就算没有直接继承,最终也会间接继承,因此 Object 类的方法都是所有子类通用的;
二、Object类常用方法(其他的可查阅API)
- protected Object clone() // 负责对象克隆的;
- int hashCode() // 获取对象哈希值的一个方法;
- boolean equals(Object obj) // 判断两个对象是否相等;
- String toString() // 将对象转换成字符串形式;
- 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 )(代码片段