转载:http://blog.csdn.net/bluesky_usc/article/details/51849125

即内容相同,我们就认为是相等的。比如:int i=5;int j =5;此时我们说i和j相等,其实指的是i和j的内容相同。

2引用类型比较

 但在Java中,除了值类型,另外还有一种引用类型,而不同的对象,其引用值其实并不相等,即在内存中的不同的地 址单元中。比如我们定义了学生类,分别有两个学生对象实例 :   

       Student stu= new Student();   Student stu1= new Student();

 此时我们无论是使用stu==stu1符号,或者stu.equals(stu1)方法,把两个对象进行比较,得到的结果都是不相等的,因为对于引用类型来说,默认是比较两个对象引用的地址,显示,每个对象的引用有自己唯一的地址,所以,是不相等。


  有时,我们比较两个对象时,如果他们的内容一样,那么我们就认为这两个对象是相等的,如上面的两个学生对象。这时,我们该怎么办呢?其实,非常简单,只要在类里面重写equals()方法,进行对象里面的内容比较久可以了。如上面,我们只需要在Student类中重写equals()方法即可。    

下面,让我们来看看实例吧!     没有重写equals()方法时的比较:

学生类:Student类

 1 class Student
 2 {
 3     int num;
 4     String name;
 5     Student(int num,String name){
 6         this.num=num;
 7         this.name=name;
 8     }
 9     
10     public int hashCode(){
11         return num*name.hashCode();
12     }
13     
14     public boolean equals(Object obj){
15         Student s =(Student)obj;
16         return num==s.num && name.equals(s.name);
17     }
18     
19     public String toString(){
20         return num+"name:"+name;
21     }
22 }
View Code

相关文章:

  • 2021-08-05
  • 2022-01-06
  • 2021-09-10
  • 2021-09-14
猜你喜欢
  • 2021-12-17
  • 2021-08-01
  • 2021-10-22
  • 2022-12-23
  • 2022-02-26
  • 2021-08-05
  • 2021-12-30
相关资源
相似解决方案