【Java基础专题】3. = =和equals有什么区别?

本问题对应的项目链接:高频题回答模版训练

回答指导:先回答 equals是一个方法,然后默认情况下比的是什么,不同的类实现方法不同,比的是什么取决于别人怎么写

共以下 14 个回答

  • 八点上线 永久会员 2024年12月12日 上午2:20

    equals是个方法,在没有重写的时候,和equals本质上是一样的,因为equals这个方法代码就是用实现的,但是重写后就不一样

    0 赞同 0 条回复
  • Silence 永久会员 2023年10月21日 下午8:19

    用 == 来判断的时候,如果说等号的两边都是基本数据类型,那么他判断的就是这两个值是否相等,如果说等号两边都是引用类型,那么他判断的就是这两个对象它指向的地址是否相同。

    用equals来判断的话,它通常情况下就是判断的这两个对象,它的某一些属性是否完全一样,根据这些属性的区别来决定返回true或者false。

    举个例子来说,String a=new string(abc),String b也等于6new string (abc)。用equals来判断ab的话,返回是true,但是用 等于等于 来判断的话,返回却是false

    需要注意的一点就是我们在调用方法的时候,尽量调用重写过的equals方法,如果说没有重写方法的话,那它默认就是继承的object这个类它的equals方法。它底层的默认实现就是用的 等于等于来进行判断的。本质上就跟直接用等于等于来判断没有区别,所以说我们需要尽量的重写equals这个方法之后再进行判断。

    0 赞同 0 条回复
  • LilyBoy 永久会员 2023年9月3日 上午10:23

    1.比较基本数据类型、引用数据类型:对象的地址;
    2.equals()不能比较基本数据类型,比较引用数据类型
    没有重写:和
    比较equal()是一样的,比较的是对象的地址
    重写:一般用于比较对象的属性值是否相等

    0 赞同 0 条回复
  • 泡芙 永久会员 2023年6月27日 下午2:43

    = = 是一个运算符,equals 是 Object 类方法之一。如果没有对 equals() 方法重写,默认情况下 equals 和 = = 是一样的,即比较对象的引用是否相等。

    但是,由于不同的类实现方法不同,很多类重写了 equals 方法,比如 String、Integer等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

    = = 在比较时,如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等。

    还有一点需要注意 equals() 方法不能用于比较基本数据类型的变量。

    0 赞同 0 条回复
  • 。 永久会员 2023年6月17日 下午6:07

    equals()是方法,一般是通过比较对象的hashCode()方法,默认是地址,如果是基本数据类型则为值比较。
    是运算符,如果是基本数据类型为值比较,引用数据类型为比较对象地址。

    0 赞同 0 条回复
  • 中国用户 永久会员 2023年6月9日 下午11:26

    默认情况下比较的是引用类型的变量所指向的对象的地址;很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等

    0 赞同 0 条回复
  • upward ᯤ⁶⁰ᴳ 永久会员 2023年6月6日 上午12:43

    基本数据类型判断值,引用类型判断地址,equal不重写可以看成判断地址,很多时候会重写

    0 赞同 0 条回复
  • 小鱼 永久会员 2023年5月30日 下午8:52

    判断基数据类型是判断值是不是相等,判断引用数据类型是判断地址值
    equal是判断在堆中是不是一样的地址值,一般会重写。

    0 赞同 0 条回复
  • mpweixin用户 永久会员 2023年5月28日 下午6:13

    equals是object类中的一个方法,用于比较两个对象的引用地址,也就是对象所在堆内存的地址,在平常使用中我们可以重写equals方法,以满足我们的业务需求。
    是一个双目运算符,比较两个两个基本数据类型的值是否相等,比较引用数据类型时比较两个对象的地址是否相同。

    0 赞同 0 条回复
  • mpweixin用户 永久会员 2023年5月28日 下午6:13

    equals是object类中的一个方法,用于比较两个对象的引用地址,也就是对象所在堆内存的地址,在平常使用中我们可以重写equals方法,以满足我们的业务需求。
    是一个双目运算符,比较两个两个基本数据类型的值是否相等,比较引用数据类型时比较两个对象的地址是否相同。

    0 赞同 0 条回复
  • Gary 永久会员 2023年5月28日 下午3:33

    equals()是一个Object类的常用方法,用于引用类型的比较,默认实现是比较两个对象的内存地址,但是很多类都重写了equals方法,使得比较的是对象的属性和对应的值,例如String Integer等类,比较是否相等时,都应该用equals();
    而多用在基本数据类型的比较,比如int char等,可以直接比较它们的值是否相等。

    0 赞同 0 条回复
  • Everglow 永久会员 2023年5月25日 上午12:05

    = =是一个操作运算符,运算数是基本数据类型比较的是值否相等,运算数是引用数据类型比较的就是两个引用的地址是否相等。
    equals()是Object类中的方法,在没有重写的情况下,equals底层就是通过 = = 来实现的,用来比较两个引用地址是否相等,也就是两个引用是否指向堆内存中同一个对象。
    我们通常重写equals方法,用来比较两个对象的属性是否相等,例如各种包装类,String类。

    0 赞同 0 条回复
  • 小肸 永久会员 2023年5月24日 下午8:27

    equals()是一个方法,Object类中的一个方法,用来比较对象是否相等。因为对象之间的比较是一个通用的行为,所以我认为Java语言的设计者把equals()封装到Object类中,因为Java中所有类都默认继承Object类,这样Java每个类都默认实现了equals()方法。而Object类中equals()方法默认实现为 = = 。而 = = 在比较基本数据类型时比较值是否相等,比较引用类型时用来比较引用指向的对象的地址值是否相同,地址值就是对象的存放位置。所以当我们需要比较两个对象内容是否相等时,就需要重写equals()方法来实现。而String类,Java默认实现equals()方法是比较字符串是否相等的,因为String类重写了equals()方法用来比较值。

    0 赞同 0 条回复
  • 秊 永久会员 2023年5月24日 下午3:25

    首先 = = 是一个操作符 ,equals 是超类 Object 中的方法,默认是用 = = 来比较的。也就是说,对于没有重写 equals 方法的子类,equals 和 = = 是一样的。

    而 = = 在比较时,根据所比较的类的类型不同,功能也有所不同:对于基础数据类型,如 int 类型等,比较的是具体的值;而对于引用数据类型,比较的是引用的地址是否相同。

    对于重写的 equals 方法,比的内容取决于这个方法的实现。

    0 赞同 0 条回复

# 回答此问题

后才能回答