JavaSE常用类-Object

常用类

一、Object类
1.Object类的介绍
(1) Object 类位于 java.lang 包中,是继承关系的根类、超类,是所有类的父类(直接的父类或是间接父类)
(2) Object类型的引用可以用于存储任意类型的对象。
(3) Object类中定义方法,所有类都可以直接使用。
2.Object类中常用方法:
(1) getClass() : 返回引用中实际存储的对象类型。
开发实际应用:用于判断两个引用中实际存储的对象类型是否一致,一致-true;不一致-false。

class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
案例: Animal a1 = new Cat();
Animal a2 = new Dog();
System.out.println(a1.getClass() == a2.getClass());

(2) int hashCode() : 返回对象的整数哈希码值。对象的哈希码值来源是将 十六进制的地址,转换十进制的整数的结果。
注意:由于不同的对象在堆空间中有不同的十六进制的地址,所有不同的对象具有不同哈希码值。
(3) String toString() : 返回该对象字符串的变现形式。
a. 作用:方便展示对象的信息,子类通常将 toString方法覆盖。toString方法覆盖的原则如下:通常将所有的属性拼接为一个 字符串进行结果返回。
b. 案例:

public String toString(){
return "name="+name+",age="+age; // this. 省略
 }
 

c. get 方法和 toString 方法 区别:
I. get方法是返回对象的单个属性的信息,并且不会改变属性对应数据类型
II. toString 方法获取所有属性的信息,并且将 所有属性拼接为 一个String类型的结果进行返回。
(4) boolean equals(Object o):用于比较对象内容是否相同。
a. == 的应用
I. 如果 == 两端 为基本数据类型的变量,则判断变量中数值是否相同
如果 == 两端 为引用类型的变量,则判断引用中存储的地址是否相同。
II. 开发中 == 两端为引用类型的实际应用:通常用于判断两个引用是否指向同一个对象。
引用名1 == 引用名2 : 结果为 true,代表两个引用指向同一个对象;
结果为false,代表两个引用指向不同的对象。
b. equals 方法的应用:
I. 父类 Object类中 equals方法实现原理如下:

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

注意:父类中的equals方法是用于比较两个引用是否同一个对象,但是开发时,通常用equals方法比较对象的内容,所以父类中equals方法不足以满足子类的 需求,则需要覆盖父类Object中equals方法。
II. equals方法覆盖的原则:

public boolean equals(Object obj){
// 1. 自反性:判断当前对象和要比较的对象是否指向同一个对象 : this 和 obj
if(this == obj){
return true;
}
// 2. 判断 obj是否 空
if(obj == null){
return false;
}
// 3. 判断 两个引用中实际存储的对象类型是否一致
if(this.getClass() != obj.getClass()){
return false;
}
// 4. 强制类型转换: 为一一比较对象属性做准备
Student s = (Student)obj;
// 5. 将对象中属性一一进行比较:基本数据类型的属性:== ; 引用类型:equals比较
if(this.age == s.age && this.score == s.score && this.name.equals(s.name)){
return true;
}else{
return false;
}
}

面试重点: == 和 equals方法的区别。
(1) ==的应用
== 两端为基本数据类型,比较变量中数值是否相同
两端为引用类型的变量,比较引用存储地址是否相同
(2) equals 方法:Object类中方法用于实现用(
)实现,比较对象地址;但是实际开发时,需要将equals方法进行覆盖,用于比较对象的内容是否相同。
(5) finalize() : JVM进行垃圾回收时,自动调用的方法。(垃圾回收器回收垃圾对象)(JVM性能调优时关注)
a. 垃圾对象:没有任何引用指向的对象。

Student s= new Student();
 s = null ; // 将 s 指向的对象设置为 垃圾对象

b. 垃圾回收器:用于JVM回收垃圾对象。简称为gc / GC
c. 垃圾回收的目的:清除垃圾对象,释放空间,提高空间利用率。
d. 垃圾回收器回收垃圾对象时机:
① 自动回收机制:当JVM内存耗尽时,不能再为新创建的对象分配空间时,JVM中垃圾回收器会自动将所有的垃圾对象一次性进行回收,垃圾回收器进行回收垃圾对象时,自动调用finalize方法。
② 手动回收机制:利用 System.gc() ; 通知 垃圾回收器(GC)进行垃圾回收,如果 GC空闲,则进行垃圾回收,如果GC繁忙,则暂不回收
注意:开发时,finalize方法中不写任何重要代码,finalize方法的执行节点不可控。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值