您的位置:首页 > 编程语言 > Java开发

JAVA中==和equals的区别

2015-01-16 22:21 169 查看
关于对象的比较我们可以通过以下三种手段来实现

一、利用"=="比较引用

Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返回false,而在对象的比较中,"=="运算符就是比较引用变量所指向的内存地址是否相同 ;

 

二、通过覆盖equals方法比较引用

[java] view
plaincopyprint?





User u1=new User("Tom");    

User u2=new User("Tom");    

User u3=u1;    

u3.setName("Jack");    

u1==u3//true    

u1.equals(u3)//true    

u1==u2//false;    

u1.equals(u2)//false    

三、重写equals()方法

在Java API中,有些类重写了equals()方法,这些类包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等。

[java] view
plaincopyprint?





String s1=new String("hello");    

String s2=new String("hello");    

s1==s2//false,按地址进行比较    

s1.equals(s2)//true, 已重写,按值进行比较    

三、手动重写equals方法比较对象

在定义一个类的时候,如果涉及到对象的比较,应该重写equals()方法。

[java] view
plaincopyprint?





public boolean equals(Object o)    

{    

   //如果和自身比较,返回TRUE    

   if(this==o) return true;    

   //如果不是这个类的实例,返回FALSE    

   if(!o instanceof User) return false;    

       

   final User u=(User)o    

   if(this.getName().equals(u.getName())    

      return true;    

   else    

      return false;    

}   

最后给出一个标准的对象比较范例

[java] view
plaincopyprint?





package javacompareDemo;  

//对象的比较  

class person{  

    private String name;  

    private int age;  

    public person(String name,int age){  

        this.name=name;  

        this.age=age;  

    }  

    public String getName() {  

        return name;  

    }  

    public void setName(String name) {  

        this.name = name;  

    }  

    public int getAge() {  

        return age;  

    }  

    public void setAge(int age) {  

        this.age = age;  

    }  

    //这里注意,比较操作是应该发生在person类内部函数上的  

    public boolean compare(person per){                 

        if(this==per)  

            return true;  

        if(this.name.equals(per.name)&&this.age==per.age)  

            return true;  

        else  

            return false;     

    }  

      

}  

public class ClassCompare1 {  

  

    public static void main(String[] args) {  

    person per1 = new person("影流之主",19);  

    person per2 = new person("放逐之刃",18);  

    person per3 = new person("影流之主",19);  

    System.out.println(per1.compare(per2));  

    System.out.println(per1.compare(per3));  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: