常用类 - Object类

常用类 - Object类

一、Object类的认识

  1. Object类:位于 java.lang 包中的类,是根类、超类、顶级父类,是所有类型父类,直接父类或是间接父类。
  2. Object类型的引用可以存储任意类型的对象
  3. Object中的方法是每一个类都具备的功能。

二、Object类中常用的方法

  1. getClass():被 final修饰的方法,不能被子类覆盖,获取引用中实际存储的对象类型。
    (1) 实际开发应用:通常用于判断两个引用中实际存储的对象类型是否一致;
    (2) 案例:
Animal a1 = new Dog();
Animal a2 = new Cat();
System.out.println(a1.getClass() == a2.getClass());

(3) 注意:引用名 instanceof 类名:用于判断 前面引用中实际存储的对象类型是否为后面的一种类型,是-true;不是-false.
2. String toString():没有被final修饰,允许子类覆盖,返回对象字符串表现形式。
(1) toString方法覆盖的原则:通常将所有的属性拼接为一个String类型的结果作为返回值返回。

public String toString(){
  return "name="+name+",age="+age+",score="+score;
}

(2) toString方法:是为了方便编程人员打印对象属性信息而设置的一个方法。将所有的属性信息拼接为一个字符串。
get方法:是获取单个属性的信息,并且不会改变属性对应的数据类型。

  1. int hashCode():没有被 final修饰,允许被子类覆盖,返回一个对象的哈希码值。
    (1) 对象的哈希码值:是由当前对象在堆空间中十六进制的地址转换为十进制的结果(无需编程人员转换)
    (2) 由于不同的对象在堆空间具有不同的地址,所有不同的对象具有不同哈希码值

  2. boolean equals(Object obj):没有 被final修饰,允许子类覆盖,用于比较两个对象的内容是否相同,内容相同-true,内容不同-false
    (1) == 的应用如下:
    a. 如果 == 两端连接的是基本数据类型的变量,则比较的是数据
    b. 如果 == 两端连接的是引用,则比较引用中存储的地址是否相同,相同-true;不同-false.
    注意:在实际开发时,通常利用 == 判断两个引用是否指向同一个对象
    (2) equals方法的应用:
    a. Object类中equals方法的实现,依然比较的引用中存储的地址相同,实现如下

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

b. 子类如果利用equals方法比较内容,需要覆盖(重写)equals方法,覆盖的原则如下:

public boolean equals(Object obj) {
	// this:当前对象 和 obj:传递的对象
	// 1. 自反性:判断两个引用是否指向同一个对象
	if(this == obj) {
		return true;
	}
	// 2. 判断 obj 是否为 null
	if(obj == null) {
		return false;
	}
	// 3. 判断两个引用存储的实际对象类型是否相同
	if(this.getClass() != obj.getClass()) {
		return false;
	}
	// 4. 强制类型转换obj:将 obj强转为当前对象的类型 ,为第5步将对象的属性一一进行比较做准备的
	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;
	}
}
  1. void finalize():没有被final修饰,允许子类覆盖,垃圾回收器在回收垃圾对象时,jvm自动调用的方法。【提高性能-jvm】
    (1) 垃圾对象:如果没有任何引用指向的对象。
    (2) 垃圾回收:jvm会在某些条件下,对内存垃圾进行清理回收
    (3) 垃圾回收的目的:清除垃圾对象,提高内存空间的利用率
    (4) 垃圾回收器:简称为 GC/gc,jvm用于回收垃圾对象
    (5) GC回收垃圾对象的时机:
    a. 自动回收:当jvm内存被占用满时,jvm启动GC对内存垃圾对象进行回收,GC在回收垃圾对象时调用finalize方法。
    b. 手动回收:利用 System.gc()通知jvm启动垃圾回收器回收垃圾对象,如果GC空闲,则进行垃圾回收,如果GC繁忙则,暂不回收。
    注意:在实际开发时,不要将代码定义在finalize中,忽略此方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值