java object的概述_Javase之object类的概述

object类的概述

object类是类层次结构的根类,每个类都使用object作为超类。

即每个类都直接或间接的继承object类。

object类中方法介绍

hashCode

public int hashCode():返回对象的哈希码值。

​注意:哈希值是根据哈希算法计算出来的一个值,该值与地址值有关,但不是实际的值。可理解为地址值。

getClass

public final Class> getClass():返回object运行时类,得到一个Class对

象。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象

在Class类中有getname()方法以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

toString

public String toString():返回该对象的字符串表示。

toString方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

源码:

public String toString() {

return getClass().getName() + "@" +

Integer.toHexString(hashCode());

}

ps:Integer.toHexString()为Integer类下一静态方法,

public static String toHexString(int i):以十六进制(基数 16)无符号

整数形式返回一个整数参数的字符串表示形式。

toString()方法返回的信息是无意义的。所以建议所以子类重写改方法。

重写的格式为:把所有成员变量值返回即可。

但这样不是最好,最好由编译器自动生成即可。

class Test{

int num;

//此处是自动生成的代码

@Override

public String toString() {

return "Test [num=" + num + "]";

}

}

class Main{

public static void main(String[] args){

Test t = new Test();

//测试直接输出对象的结果

System.out.println(t);

}

}

out:

Test [num=0]

直接输出一个对象的名称,就是调用改对象的toString()方法。

equals

public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

Object类中的源码:

public boolean equals(Object obj) {

return (this == obj);

}

通过查看Object类中的equals()源码可知在没有重写equals()的情况下,equals()方法是由"=="实现。

==:

基本类型:比较值是否相等。

引用类型:比较其地址值是否相等。

equals()方法,默认情况比较的是地址值,但是比较地址值意义不大,所以要重写改方法。

在方法重写时,比较对象的成员变量值是否相同。

重写代码优化:提高效率,提高程序健壮性。

要想做到最好优化还是自动生成。(自动生成时会和hascode()方法一起生成。至于为什么这两个方法需要同时生成在集合中有解释)

class Test{

int num;

String sfa;

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + num;

result = prime * result + ((sfa == null) ? 0 : sfa.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Test other = (Test) obj;

if (num != other.num)

return false;

if (sfa == null) {

if (other.sfa != null)

return false;

} else if (!sfa.equals(other.sfa))

return false;

return true;

}

}

注:此为eclipse生成可能与idea生成的有所不同,但效果一样。

finalize

protected void finalize() throws Throwable :当垃圾回收器确定不存在

对该对象的更多引用时,由对象的垃圾回收器调用此方法。

clone

protected Object clone() throws CloneNotSupportedException:创建并

返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。

Cloneable:如果一个类想要实现clone()方法,那么此类需要实现了Cloneable接口,以示Object.clone()方法合法的进行对该类的按字段复制。

Cloneable是一个标记接口,表明实现该接口的类可以实现对象的复制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值