Object类
作者:互联网
1.Object类概述
Object类是属于java.lang包下的类。java.lang.Object类是Java语言的根类,是所有类的父类。
2.Object类的方法
①getClass()方法:返回对象的运行时类
public final native Class<?> getClass();
②hashCode()方法:返回对象的哈希码,该方法默认返回的哈希码是按照对象的地址生成。
class ObjectTestBean{
private int id;
}
public class ObjectTest {
public static void main(String[] args) {
ObjectTestBean objectTestBean1 = new ObjectTestBean();
ObjectTestBean objectTestBean2 = new ObjectTestBean();
System.out.println("对象地址: " + objectTestBean1 + " :hash -> " + objectTestBean1.hashCode());
System.out.println("对象地址: " + objectTestBean2 + " :hash -> " + objectTestBean2.hashCode());
}
}
控制台的输出:
③equals()方法:用来判断两个对象是否相等,该方法是比较对象的内存地址。如果要进行比较对象中的内容是否相等,则要重写hasCode()方法和equals()方法。
判断两个对象内容下相等的代码如下:
class ObjectTestBean{
private int id;
private String name;
public ObjectTestBean(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ObjectTestBean that = (ObjectTestBean) o;
if (id != that.id) return false;
return Objects.equals(name, that.name);
}
}
public class ObjectTest {
public static void main(String[] args) {
ObjectTestBean objectTestBean1 = new ObjectTestBean(1, "lisi");
ObjectTestBean objectTestBean2 = new ObjectTestBean(1, "lisi");
System.out.println(objectTestBean1.equals(objectTestBean2));
}
}
下面关于equals()就会涉及到以下的问题。
问题一:equals() 与 == 的区别是什么?
==:它的作用是用来判断两个对象的地址是否相等。
equals():它的作用要分两种情况:
情况一:类没有重写equals()方法,则比较两个对象的地址是否相等。
情况二:类重写了equals()方法,则比较两个对象的内容是否相等。
问题二:hashCode() 和 equals() 的关系?
对于两者的关系要分为两种情况来分析:
情况一:该类不会用来创建散列表
在这种情况下,hashCode()和equals()方法没有任何关系
情况二:该类会用在创建散列表
在这种情况下,hashCode()和equals()方法是有关系的:如果两个对象相等,hash值一定相同;如果hash值相等,对象却不一定相等。因此,在这种情况下。若要判断两个对象是否相等,除了要覆盖equals()之外,也要覆盖hashCode()函数。否则,equals()无效。
标签:对象,Object,equals,hashCode,id,ObjectTestBean,public 来源: https://www.cnblogs.com/lyfzzz/p/16496938.html