java中 “==”和“equals()的区别

1,对于基本数据类型

==比较值是否相等,因为基本类型不是对象,所以没有equals方法。

2,对象

==作用于引用类型的变量时,则比较的是所指向的对象的地址。

equals()是从Object类中继承过来的。

equals()方法在Object类中定义如下: 

public boolean equals(Object obj) { 

return (this == obj); 

可以看出最初的equals方法与==作用相同,都是判断引用类型的变量所指向的对象的地址是否相同。(即是否为同一引用)

所以要对equals方法进行重写覆盖用于比较两个对象所存储的内容是否相等

代码示例:

public class Equals {

    public static void main(String[] args) {
        Student s1=new Student(1,"Tom");
        Student s2=new Student(1,"Tom");
        System.out.println((s1==s2)?"true":"false");
        System.out.println((s1.equals(s2))?"true":"false");

    }

}
class Student {
private int id;
private String name;
public Student(int id, String name) {
    super();
    this.id = id;
    this.name = name;
}

}

运行结果:false

                  false

重写覆盖equals后:

public class Equals {

    public static void main(String[] args) {
        Student s1=new Student(1,"Tom");
        Student s2=new Student(1,"Tom");
        System.out.println((s1==s2)?"true":"false");
        System.out.println((s1.equals(s2))?"true":"false");

    }

}
class Student {
private int id;
private String name;
public Student(int id, String name) {
    super();
    this.id = id;
    this.name = name;
}
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Student other = (Student) obj;
    if (id != other.id)
        return false;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    return true;
}

}

运行结果:false
                  true

注: 

New出来的对象都是重新分配内存地址;

String,Double,Date,Integer等都对equals方法已经进行了重写用来比较指向的对象所存储的内容是否相等

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值