Java-Object

Java-Object

1 概述

Object是所有类的父类,也就是说Object的方法所有类都有

2 方法

2.1 Equals

public boolean equals(Object obj){

return this == obj;
    //o1.equals(o2);this是o1,obj是o2

}

equals方法设计的目的:比较两个对象是否相等,是否为同一个对象,而Object中的equals默认比较内存地址

== 比较基本类型是比较值的大小,比较引用类型比较的是内存地址,两个对象的内存地址肯定不相同

如果我们比较两个对象的内存地址,那没有任何价值,我们一定是用两个对象中的具体属性进行比较才有价值,但是Object不知道我们要比较什么,所以就默认比较地址,当我们需要比较时,根据需求对equals进行重写即可

只要是引用类型比较,就需要equals,但是我们自己的类需要重写equals方法

而很多系统类都已经重写了equals方法,比如String

2.2 Finalize

JVM:跨平台,面向对象,多线程,自动垃圾回收机制

1 每个对象都有

2 不需要每个程序员调用,有系统自动调用

3 垃圾:没有更多的引用指向该对象的时候,该对象被视为垃圾数据

​ 堆内存有这个对象,但是谁也找不到他,他就是垃圾,此时就等待被回收

4 对象被回收之前们会自动帮我们调用该对象的finalize方法

​ finalize方法并没有垃圾回收功能,只是被回收之前,自动执行而已

​ 所以我们手动调用该方法是没有意义的

2.3 toString

设计目的: 返回该对象的字符串表示形式,可以通过这方法,把每个对象的数据输出出来,让外界知道

输出一个引用类型的时候,底层会自动调用该对象的toString方法

Object中的toString方法

public String toString(){

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

2.4 hashCode

设计目的: 是为了给每个对象生成一个唯一的标识符

​ 同一个对象生成多次值,值一定相同

​ 不同对象生成的值,也有可能相同,又叫hash冲突

重写hashCode的时候,还需要考虑重写equals,因为只是hashCode和equals其中的一个,是没有办法在散列表中表示唯一性的

hash算法是一种安全的加密算法,把不定长的值改为定长的值,不能保证唯一性

​ 直接寻址法

​ 数字分析法

​ 除留余数法

​ 随机数法

​ 折叠法

hashCode就是返回该对象的hash值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值