Java常用类之Object类
2021/7/25 12:08:42
本文主要是介绍Java常用类之Object类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Object类
山无处不在,我们都还在山脚下。 ——《时间移民》
今日内容 — Object类,作为类家族中特殊的存在,我称它为祖宗类,所有类都继承了它,想想都累。本文简单介绍其作用以及常用的方法,带你走进奇妙的世界,如有错误,欢迎指正。
基本作用
- 超类、基类,所有类的直接或间接父类,位于继承树的最顶层(食物链最顶端的男人)。
- 任何类,如没有书写extends显示继承某个类,默认直接继承Object类,否则为间接继承。
- Object类所定义的方法,是所有对象都具备的方法。
- Object类型可以存储任何对象。
- 作为参数,可以接受任何对象。
- 作为返回值,可以返回任何对象。
常用方法
方法名 | 描述 |
---|---|
public final Class<?> getClass() | 返回此 Object 的运行时类。 |
public int hasCode() | 返回该对象的哈希码值。 |
public String toString() | 返回该对象的字符串表示。 |
public boolean equals(Object obj) | 指示其他某个对象是否与此对象“相等”。 |
protected void finalize() throws Throwable | 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 |
getClass()方法
public final Class<?> getClass(){}
-
返回引用中存储的实际对象类型。
-
应用:通常应用于判断两个引用中实际存储对象类型是否一只致。
hasCode()方法
public int hasCode(){}
- 返回该对象的哈希码值。
- 哈希值根据对象的地址或字符串或数字使用hash算法计算出来的
int
类型的数值。 - 一般情况下,相同对象返回相同哈希码。
toString()方法
public String toString(){}
- 返回该对象的字符串表示形式(表现形式)。
- 可以根据程序需求重写该方法。
- 对象输出时,会调用Object类中的toString()方法打印内容
equals()方法
public boolean equals(Object obj){}
- 默认实现为(this==obj),比较两个对象地址是否相同。
- 可进行重写,比较两个对象的内容是否相同。
- 在String类中已经实现好了此方法,所以用户可直接进行两个字符串对象的比较。
finalize()方法
protected void finalize() throws Throwable{}
-
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收对列。
- 垃圾对象:没有有效引用指向此对象时,为垃圾对象。
- 垃圾回收:由GC销毁垃圾对象,释放数据存储空间。
- 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。
- 手动回收机制:使用System.gc();通知JVM执行垃圾回收。
实例:
import java.util.Objects; public class Main{ public static void main(String args[]){ Student a = new Student("小明",15); Student b = new Student("李华",16); Student c=new Student("小明",15); Student d=a; //getClass()方法 System.out.println("getClass():"); if(a.getClass() == b.getClass()){ System.out.println("a和b为同一类型"); }else{ System.out.println("a和b为不是同一类型"); } //hasCode()方法 System.out.println("hasCode():"); System.out.println("a:"+a.hashCode());// System.out.println("b:"+b.hashCode()); System.out.println("c:"+c.hashCode()); System.out.println("d:"+d.hashCode()); //toString() //System.out.println("未重写toString()方法:"); System.out.println("重写toString()方法后:"); System.out.println(a.toString()); System.out.println(a);//对象输出时调用Object类中的toString()方法 //equals()重写前 //System.out.println("重写equals()前:"); System.out.println("重写equals()后:"); System.out.println("a与b比较:"+a.equals(b)); System.out.println("a与c比较:"+a.equals(c));//注意重写前比较的为hasCode(地址) System.out.println("a与d比较:"+a.equals(d)); } } class Student{ private String name; private int age; public Student(String name,int age){ this.name = name; this.age = age; } public Student(){ this("",0); } @Override public String toString() {//重写toString()方法 return "name=" + name + "age=" + age; } @Override public boolean equals(Object o) {//重写equals()方法 if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } }
运行结果:(注意关注标注的地方所写代码的区别)
重写toString()、equals()方法前运行结果:
重写toString()、equals()方法后运行结果:
总结
- 实际开发中的作用,由于Object类可以接收任意的引用数据类型,所以在很多的类库设计上都采用Object作为方法的参数,这样操作起来更方便。
- Object类中还有一些方法如wait()、notify()等通常用在线程上,本文未介绍,后期学习线程方面的知识再进行相应的补充。
这篇关于Java常用类之Object类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器