Loading

==和equals方法的区别

1.“==”常用来比较基本数据类型,8种基本数据类型有byte、shortlongdoublecharintfloat、boolean,
因为变量直接存储的就是他们的值,所以用"=="去比较,比较的就是他们的值。

但是复合数据类型用“==”比较的是他的堆内存地址。
2.“equals”对于复合数据类型比较的也是它的堆内存地址(不能作用于基本数据类型的变量)。

但在实际项目中常用来比较String字符串的内容相等是为什么呢?

那是因为对于String(还有Date,Integer)类型重写了equals方法,使其比较的是存储对象的内容是否相等,而不是堆内存地址。

 

 1      public static void main(String[] args) {
 2                  
 3          Student s1 =  new Student("张三");
 4          Student s2 =  new Student("张三");
 5            
 6          String  s3 = "张三";
 7       String s4 = s1; // 引用传递,同一对象
 8          boolean b = s1.equals(s2);               //比较2个对象是否相等
 9          System.out.println(s1 == s2);
10          System.out.println(b);                    //重写之后比较的是对象中的属性值
11      }
12          System.out.println(s1 == s2); // false(内存地址不同)
13          System.out.println(s1.equals(s2)); // true(内容一致)         
14       System.out.println(s1 == s4); // true(地址相同)   
15       System.out.println(s1.equals(s4)); // true(内容一样)

 

posted @ 2020-04-05 00:40  Rzk  阅读(472)  评论(0编辑  收藏  举报