1.对于基本类型来说,==比较的是数据的值,equals方法也是数据的值;
对于引用类型来说,==比较的是引用的地址,equals方法比较的是对象的内容。
2.String是引用类型,用“=”创建字符串时,字符串保存在堆里面的字符串常量池中,而new String()则是保存在堆的另一个空间,所以即使是相同内容的字符串,==结果也不一定为
true,因为==比较的是地址。
public class Test3 { public static void main(String[] args) { String str1="Shane"; String str2="Shane"; String str3=new String("Shane"); System.out.println(str1==str2);//true System.out.println(str1==str3);//false System.out.println(str2==str3);//false System.out.println(str1.equals(str2));//true System.out.println(str3.equals(str2));//true System.out.println(str1.equals(str3));//true System.out.println("Shane".equals(str1));//true } }
3.还有一点需要注意的是,我们用equals方法时,如果有常量,我们尽量将常量放在左边,变量放在右边。因为如果变量=null,且变量在.左边,就会报空指针异常。