==比较的是八种基本数据类型,比较的是实实在在的值;
equals 则比较的是创建的实例对象.
Person a=new Person();当你New一个Person的实例的时候赋给变量a 的值其实是一个hashcode值,这个值相当于就相当于c语言当中的指针,但是JAVA当中没有指针的概念,JAVA当中称之为"引用"。当你a.equals(b)的时候比较的就是两个实例对象,因为你new 的是两个对象所以结果是false, 而a==b则是比较两个对象的引用因此也是false;
而当你 Person b=a;的时候 是把 a的引用赋值给了b,s所以 进行 "=="比较运算时比较的是引用 二者相同,则结果是true,而进行equals则比较的是实例对象,因为二者引用都指向堆内存中的同一个对象,所以结果为true. |