equals和 == 的区别

简介: equals和 == 的区别

1 问题

equals和 == 都可以对于值类型,然后比较代数值是否相等。那么equals和 == 的具体区别是什么?


2 方法

  1. == 是运算符,可以使用在基本数据类型变量和引用数据类型变量中,
    如果比较的是基本数据类型:
    比较的是两个变量保存额数据是否相等。
    如果比较的是引用数据类型:
    比较两个对象的地址值是否相同。
    即两个引用是否指向同一个对象实体。

    其运行结果是:
    true:
    基本数据类型不用看类型,因为有自动类型提升。
    false: 因为比较的是地址。
public class boke3a {
   public static void main(String[] args) {
       //基本数据类型举例
       int number1 = 65;
       float number2 = 65.0f;
       System.out.println(number1 == number2);
       //引用类型举例
       Student stu1 = new Student("jake",19);
       Student stu2 = new Student("jake",19);
       System.out.println(stu1 == stu2);
   }
}
  1. equals()是一个方法,而非运算符,只能适用于引用数据类型。

    其运行结果:
    由于stu1和stu2是两个对象,所以地址不一样,输出false是因为比较的是地址值。
public class boke3b {
   public static void main(String[] args) {
       Student stu1 = new Student("jake",19);
       Student stu2 = new Student("jake",19);
       System.out.println(stu1.equals(stu2));
   }
}
  1. 但在实际使用中,一般会重写定义equals方法,因为像String、Date、File、包装类等都重写了Object类中的equals()方法。
    重写后,比较的不是两个引用的地址值,而是比较两个对象的实体内容是否相同。


3 结语

== 比较基本数据类型时,比较的是数值;比较引用数据类型时,比较的是地址值。而equals比较的其实还是地址值。但是由于像String、Date、File、包装类等都重写了Object类中的equals方法。除了 String、Date、File、包装类等以外,若想使用equals比较对象的实体而非地址,就需要重写equals。

目录
相关文章
|
2月前
|
Java
== 和 equals 有什么区别?
本文解释了在Java中,"=="用于比较基本数据类型的值或引用类型的引用是否相等,而"equals"默认也是比较引用,但常常被重写为比较对象的值是否相等,例如在String和Integer类中,并且提供了如何自定义"equals"方法的示例。
119 0
== 和 equals 有什么区别?
|
2月前
|
C# 开发者
【捞底干货】C#中equals和==运算符的区别
【捞底干货】C#中equals和==运算符的区别
64 1
|
4月前
|
Java
“a == b” 和 “a.equals(b)” 的区别
【8月更文挑战第22天】
65 0
|
6月前
|
存储 Java
equals与==区别
equals与==区别
45 0
equals 和 == 的区别?
equals 和 == 的区别?
85 0
|
Java
== 和 equals 的区别是什么
== 运算符用于比较两个对象的引用是否相等。它对于基本类型比较值的相等性,对于引用类型比较引用的相等性。当使用 == 比较两个对象时,它会检查它们是否指向相同的内存地址。如果两个对象具有相同的内存地址,则它们被认为是相等的。
73 1
|
Java
==和equals()
==和equals()
86 0
|
存储 Java
详解“==”和equals的区别
“==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。
|
存储 Java
“==”和equals 最大的区别
“==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。