Java Object类中的11种方法

一、需要重写(3种)

1.toString()

返回String类型,是将对象以字符串的形式输出
重写:

public String toString(){
}
2.equals(Object obj)

返回Boolean类型,用于判断this和obj是否相等
重写:

public boolean equals(Object obj){
	if(this == obj) return true;
	if(obj == null) return false;
	Student other = (Student) obj; // 强转
}
3.hashCode()

返回int类型,生成对象的哈希值,与内存中的存储位置有关
默认实现使用C++底层代码,计算方式通过内存空间来计算,new出的对象,物理位置都不同,因此每个new对象哈希值都不一样
重写规则: 与equals方法一致

  • equals判断相等的两个对象,必须保证哈希值一样;不相等,保证哈希值尽量不同。

二、类加载相关(3种)

4.Class getClass()

加载-方法区-字节码对象
加载工具:类加载器 ClassLoader(反射)
加载的触发条件:

  • 实例化对象——new
  • 静态方法/静态变量
  • 使用子类时,父类需要加载
  • Class.forName(“类名”(——java.lang.String包中))——手动加载
  • String.class->获得类的字节码对象
5.Object clone():浅克隆-复制

浅克隆:clone() -> 复制引用
深克隆:对象的读写 -> 复制对象
若要使用clone()方法,则要求对象是可以克隆的
Cloneable():为了标记是可克隆的,没有任何方法/属性,不常用

6。void finalize() - GC——垃圾回收

内存泄漏:内存被无效对象占用

  • GC:在程序运行时开始启动,不定时回收所标记的垃圾,也可以手动调用GC->System.gc()
  • 没有引用的对象会被内存标记为垃圾,故原则上,java中是不存在内存泄漏的
  • finalize()在对象被回收时调用

三、线程相关(5种)

7-9.wait()*3

导致线程进入等待,必须配合锁来使用

10、11.notify()/notifyAll()

notify() —— [随机]唤醒[一个]对象上等待的线程
notifyAll() —— 唤醒所有对象上等待的线程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值