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,且变量在.左边,就会报空指针异常。

12-20 16:40