"=="与equals()的区别

案例

        //基本数据类型的比较
        int num1 = 10;
        int num2 = 10;
        System.out.println(num1 == num2);   //true
        //引用数据类型的比较
        String s1 = "chance";
        String s2 = "chance";
        System.out.println(s1 == s2);        //true
        System.out.println(s1.equals(s2));    //true
        //String类中==与equals的比较,在堆中开辟了两个地址
        String s3 = new String("chance");     
        String s4 = new String("chance");
        System.out.println(s3 == s4);        //false
        System.out.println(s3.equals(s4));    //true
        //非String类中==与equals类型的比较
        Scanner scanner = new Scanner(System.in);      
        Scanner scanner2 = new Scanner(System.in);
        System.out.println(scanner.equals(scanner2));       //false
        Scanner sc = scanner;
        System.out.println(scanner.equals(sc));            //true

总结

  • 对于基本的数据类型,“==”作为关系运算符,比较的是值。
  • 在引用数据类型中,“==”和equals()比较的都是在堆中的地址是否相等。
  • 但是String、Integer、Date等类中重写了equals()和hashCode()方法,不再比较他们的地址。

猜你喜欢

转载自blog.csdn.net/qq_33764491/article/details/79792964
今日推荐