Java深入探究Object类的方法(object类有哪些方法 java)

网友投稿 283 2022-07-30


目录1.equals方法1.API中equals方法的介绍2.==和equals 的对比2.hashCode方法3.toString方法4.finalize方法

本文主要带大家看看Object类中一些常用方法的API文档的介绍和JDK中的源码。

1.equals方法

1.API中equals方法的介绍

2.==和equals 的对比

== 既可以判断基本类型,又可以判断引用类型,如果判断的是基本类型,判断的是值是否相等,如果判断的是引用类型,则判断的是地址是否相等,即判断是不是同一个对象。equals 方法是 Object 类中的方法,只能判断引用类型,默认的是判断地址是否相等,子类中往往会重写该方法,重写后用于判断内容是否相等

我们可以看看 Object,String 和 Integer中的 equals 方法的 JDK 源码。

Object o = new Object();

o.equals(1);//Object类中的equals方法

System.out.println("hello".equals("hello"));//String中的equals方法

Integer integer = new Integer(5);

System.out.println(integer.equals(5));//Integer中的equals方法

//将光标放在equals方法上,按Ctrl同时按鼠标左键,就可跳转到StriHFonBBdOsAng和Integer中的equals方法的JDK源码。

//Object类中的equals方法

public boolean equals(Object obj) {

return (this == obj);//判断是不是当前对象

}

//String类中重写的equals方法

public boolean equals(Object anObject) {

if (this == anObject) {

return true;//首先判断是不是当前对象

}

if (anObject instanceof String) {//判断当前类型是不是字符串类型

String anotherString = (String)anObject;//向下转型

int n = value.length;//保存传入字符串的长度

if (n == anotherString.value.length) {

char v1[] = value;

char v2[] = anotherString.value;

int i = 0;

while (n-- != 0) {

if (v1[i] != v2[i])//一个一个字符比较

return false;

i++;

}

return true;

}

}

return false;

}

//Integer类中重写的equals方法

public boolean equals(Object obj) {

if (obj instanceof Integer) {//判断当前类型是不是Integer类型

return value == ((Integer)obj).intValue();//向下转型

}

return false;

}

2.hashCode方法

1.API中hashCode方法的介绍

2.提高具有哈希结构容器的的效率。

3.两个引用,如果指向的同一个对象,哈希值一样,指向不同对象,哈希值就不一样。

4.哈希值主要根据地址来的,但不能将哈希值等价于地址。

3.toString方法

1.API中toString方法的介绍

2.默认返回:全类名(包名+类名)+@+哈希值的十六进制。

3.往往重写toString方法,用于返回对象属性。

4.当直接输出对象时,toString方法会被默认的调用。

//JDK中的toString方法源码

public String toString() {

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

//返回全类名(包名+类名)+@+哈希值的十六进制

}

//重写toString方法

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

", gender=" + gender +

'}';

}//往往重写toString方法,用于返回对象属性。

4.finalize方法

1.API中finalize方法的介绍

2.对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作。

3.当某个对象没有引用时,jvm就会使用垃圾回收机制来销毁此对象,销毁对象前会先调用finalize方法。

4.垃圾回收机制的调用,是由系统的GC算法来决定的,也可通过System.gc()主动触发。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java公平锁和非公平锁的区别(java公平锁有哪些)
下一篇:Java实现中国象棋游戏(java开发象棋游戏)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~