= = ,equals ,hashcode
- “==”对于基本数据类型,判断两个变量的值是否相等;对于引用类型则比较两个对象是否【地址】相同,是否为同一引用。
- “equal”用于比较两个对象的类型和值是否相同【不是比地址】。不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类。
- hashcode:hashcode(散列码),我们先简略的了解hashcode是什么东西?有什么用?深入了解后再补充。hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,通过hash算法得到的hash值被记录在hash表中,hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多种算法得到hash值。这个hash值就是hashcode
【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。
举例说明:
public class Demo03 {
int a1;
int a2;
//调用构造方法赋值
public Demo03(int a1,int a2) {
this.a1=a1;
this.a2=a2;
}
public boolean equals(Object anObject) {
if(this==anObject) {
//判断地址值是否一样
return true;
}
if(anObject instanceof Demo03