从零学Java Object类
2024-01-07 20:22:05
Java Object类
文章目录
Object类
所有类的直接或间接继承Object,位于继承树的最顶层。
任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。
Object类中所定义的方法,是所有对象都具备的方法。
Object类型可以存储任何对象。
- 作为参数,可接受任何对象。
- 作为返回值,可返回任何对象。
Object类中的方法
1 getClass()方法
public final Class<?> getClass() {}
返回引用中存储的实际对象类型 (类对象)。
应用:通常用于判断两个引用中实际存储对象类型是否一致。
2 hashCode()方法
public int hashCode(){}
返回该对象的十进制的哈希(hash)码值
哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值。
3 toString()方法
public String toString(){}
返回该对象的字符串表示形式。
可以根据程序需求重写该方法,如:展示对象各个属性值。
重写toString()方法:
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", score=" + score +
'}';
}
4 equals()方法
public boolean equals(Object obj){}
默认实现为(this == obj),比较两个对象地址是否相同。
可进行重写,比较两个对象的内容是否相同。
重写equals()方法:
@Override
public boolean equals(Object obj) {
//1 判断obj是否为null
if (obj==null) {
return false;
}
//2 判断this和obj地址相同
if (this == obj) {
return true;
}
//3 判断obj是否为Student类型
if (obj instanceof Student) {
//4 向下转型
Student s = (Student) obj;
//5 判断属性值是否相同
if (this.name.equals(s.name) && this.gender.equals(s.gender) && this.age==s.age) {
return true;
}
}
return false;
}
面试题: == 和 equals 方法的区别?
res:
1 基本类型 == 比较的是值, 引用类型 equals 方法比较的是地址
2 如果equals方法不能满足子类的需求, 可以重写equals方法
5 finalize()方法(JDK1.9放弃 了解即可)
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。
垃圾对象:没有有效引用指向此对象时,为垃圾对象。
垃圾回收: 由GC(Garbage Collector)销毁垃圾对象,释放数据存储空间。
自动回收机制:JVM自动回收所有垃圾对象。
手动回收机制:使用System.gc(); 通知JVM执行垃圾回收。
eg:
@Override
protected void finalize() throws Throwable {
System.out.println(this.name+"被回收了");
}
Student student = new Student("阿丹",16,"女",100);
student = null;
System.gc();
res:
阿丹被回收了
文章来源:https://blog.csdn.net/weixin_50858647/article/details/135430490
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!