栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的equals() 与 “==“的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的equals() 与 “==“的区别

equals() 与 == 的区别是什么?

        

        "==" : 它的作用是判断两个对象的地址是不是相等。即,判断引用是否指向同一个对象;

        equals():它的作用也是判断两个对象是否相等。但它一般有两种使用情况;

                        情况1,类没有重写equals()方法。则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。
                         情况2,类重写了equals()方法。一般,我们都覆盖equals()方法来两个对象的内容相等;若它们的内容相等,则返回true(即,认为这两个对象相等)。

        通过示例比较它们的区别

import java.util.*;
 2 import java.lang.Comparable;
 3 
 4 
10 public class EqualsTest{
11 
12     public static void main(String[] args) {
13         // 新建2个相同内容的Student对象,
14         // 再用equals比较它们是否相等
15         Student s1 = new Student("eee", 100);
16         Student s2 = new Student("eee", 100);
17         System.out.printf("s1.equals(s2) : %sn", s1.equals(s2));
18         System.out.printf("s1==s2 : %sn", s1==s2);
19     }
20 
21     
24     private static class Student{
25         int age;
26         String name;
27 
28         public Student(String name, int age) {
29             this.name = name;
30             this.age = age;
31         }
32 
33         public String toString() {
34             return name + " - " +age;
35         }
36 
37           
40         @Override
41         public boolean equals(Object obj){  
42             if(obj == null){  
43                 return false;  
44             }  
45               
46             //如果是同一个对象返回true,反之返回false  
47             if(this == obj){  
48                 return true;  
49             }  
50               
51             //判断是否类型相同  
52             if(this.getClass() != obj.getClass()){  
53                 return false;  
54             }  
55               
56             Student student= (Student)obj;  
57             return name.equals(student.name) && age==student.age;  
58         } 
59     }
60 }

 运行结果:

s1.equals(s2) : true
s1==s2 : false

 在EqualsTest.java 中:
 1 s1.equals(s2)  : 这是判断s1和s2的内容是否相等。因为Student重写equals()方法,而这个equals()是用来判断s1和s2的内容是否相等,s1和s2的内容相等;因此,返回true。

2  s1==s2 : 这是判断s1和s2引用(地址)是否指向同一个对象。由于它们是各自新建的两个Student对象,引用不同;因此,返回false
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463185.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号