==比较的是对象的地址或者是引用,equals比较的是对象的内容
举例如下:
1.String str1="hello";
String str2="hello";
"=="比较的结果是ture,str1初始化的时候首先程序会到String池查找是否存在一个和hello内容一样的对象,如果存在的话就将其引用赋值给str1,否则会在池中续一个"hello"对象,并指向这个对象。当定义一个str2时,这个时候String池中已经存在了一个"hello"对象,因而两个对象其实是引用的一个地址,所以会返回true。
"equals"的执行结果也是true,这个不用解释了。
2.String str1="hello";
String str2=new String("hello");
"=="比较的结果是false,这是由于定义Str2的时候不管String池中是否存在这个“hello”对象,都会新建一个String的对象并将其赋值给Str2,所以两个对象的引用是不同的地址,因而返回false。
"equals"的执行结果为true,由于两者的内容是完全一样的。
==是比较的是两个引用,他们必须是要指向同一个对象的,但是equals则不同,它只是比较这两个字符串的内容是否相等。当我们新new来一个对象的时候,我们就需要用的是equals。