首先==与equals的比较场景不一样,需要分2种情况:
1.对于基本数据类型
int a1=57;
int a2=67;
int a3=124;
int a4=124;
// == 用于判断2个变量的值是否相等
a1==a2;//false
a3==a4;//ture
// equals不能用于基本数据类型的判断,需要对基本数据类型进行包装
Integer b1= new Integer(a1);
Integer b2= new Integer(a2);
Integer b3= new Integer(a3);
Integer b4= new Integer(a4);
b1.equals(b2);//false
b3.equals(b4);//true
--------------------------
2.对于对象变量
String st1="wasiker ";
String st2="is super man";
String st3="wasiker is super man";
String st4="wasiker is super man";
//因为对象变量存储的是对象在内存中的地址,因此用"=="比较时,比较的是内存地址而不是2个变量引用的对象值.
//equals用于比较两个对象值是否相等.
//因此==用于比较堆内存中存放对象的地址是否相等,equals用于比较2个对象的值是否相等.
注:Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。