Java Object类方法实例分析
本文小编为大家详细介绍“Java Object类方法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java Object类方法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
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同时按鼠标左键,就可跳转到String和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方法
API中hashCode方法的介绍
提高具有哈希结构容器的的效率。
两个引用,如果指向的同一个对象,哈希值一样,指向不同对象,哈希值就不一样。
哈希值主要根据地址来的,但不能将哈希值等价于地址。
3.toString方法
API中toString方法的介绍
默认返回:全类名(包名+类名)+@+哈希值的十六进制。
往往重写toString方法,用于返回对象属性。
当直接输出对象时,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方法
API中finalize方法的介绍
对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作。
当某个对象没有引用时,jvm就会使用垃圾回收机制来销毁此对象,销毁对象前会先调用finalize方法。
垃圾回收机制的调用,是由系统的GC算法来决定的,也可通过System.gc()主动触发。
读到这里,这篇“Java Object类方法实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341