“==” 和 equals 的区别

 

    1. 对于==,如果作用在基本数据类型,则是值比较,如果是作用在引用对象(堆中数据),则是物理地址比较

    2. 对于equals,不能作用于基本的数据类型的变量,如果没有对equals方法进行重写,则比较的是引用数据类型变量所指向的对象的地址;

      String ,Date等类对equals方法进行了重写,比较的是所指向对象的内容。

              String s1 = "abc";
              String s2 = "abc";
              String s3 = new String("abc");
              String s4 = new String("abc");
              System.out.println("s1==s2, " + (s1==s2));
              System.out.println("s2==s3, " + (s2==s3));
              System.out.println("s2 equlas s3," + (s2.equals(s3)));
              System.out.println("s4==s3, " + (s4==s3));
              System.out.println("s4 equlas s3," + (s4.equals(s3)));
      输出:s1==s2, true //同一常量池中,地址相同
           s2==s3, false//String为引用对象,new出来的在堆栈中,地址不同
           s2 equlas s3,true // equlas被重写,值比较
           s4==s3, false  //new出的对象在堆中为两个对象,拥有不同地址
           s4 equlas s3,true //String中equals被重写,为内容比较
posted @ 2021-03-11 21:20  扣扣M  阅读(77)  评论(0)    收藏  举报