“==“和equals方法究竟有什么区别?

这篇具有很好参考价值的文章主要介绍了“==“和equals方法究竟有什么区别?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

String a=new String("foo");

String b=new String("foo");

两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true

在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input = ;input.equals(quit),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。

如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object的equals方法实现代码如下

boolean equals(Object o){

return this==o;

}

这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象内容是相同的文章来源地址https://www.toymoban.com/news/detail-416749.html

到了这里,关于“==“和equals方法究竟有什么区别?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BigDecimal的equals方法和compareTo方法的区别

    面试经常会问道为什么不能用BigDecimal的equals方法做等值比较? 其实BigDecimal的equals方法和compareTo并不一样,equals方法会比较两部分内容,分别是值(value)和标度(scale),而对于1.0和1这两个数字,他们的值虽然一样,但是精度是不一样的,在使用equals比较的时候会返回fals

    2024年02月04日
    浏览(26)
  • Java面试题: == 和 equals() 区别,toString方法

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

    2024年02月08日
    浏览(42)
  • 什么是集成测试?它和系统测试的区别是什么? 操作方法来了

    集成测试是软件测试的一种方法,用于测试不同的软件模块之间的交互和协作是否正常。集成测试的主要目的是确保不同的软件模块能够无缝协作,形成一个完整的软件系统,并且能够满足系统的需求和规格。 在集成测试中,测试人员将已经通过单元测试的软件模块组合起来

    2024年02月04日
    浏览(31)
  • Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

    阿里Java开发手册嵩山版中明确指出: 1、BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法 equals()方法会比较值和精度(1.0与1.00返回结果为false),而compareTo()则会忽略精度 2、禁止使用构造方法BigDecimal(double)的方式把double值转换为BigDecimal对象 BigDecimal(double)存在精度损

    2024年02月07日
    浏览(43)
  • Object.equals 和 String.equals的区别

    一.  源码展示: 1. Object.equals: ①引用类型地址值比较,直接返回结果:true || false   2. String.equals: ① 判断地址值是否相等,若相等 返回 true,若不等则进入下列判断 ; ② 判断参数是否为String类型,若不是 返回false,若是则进入下列判断; ③ 判断字符串长度是否相等,若不

    2024年02月13日
    浏览(32)
  • java八股文面试[java基础]—— hashCode 与 equals 区别 == 与 equals的区别

    两个对象的hashCode()相同时,equals()相等吗?_两个对象的hashcode一样,equal一样么_不想当个程序员的博客-CSDN博客 equals():比较的是非基本类型的数据的引用地址(即内存地址)是否相同,但是对于重写equals方法的类型,比较的是对象内容是否相同。 hashCode():计算对象实例的哈

    2024年02月12日
    浏览(35)
  • == 与 equals 的区别?

    一. 介绍: Java中的 \\\"==\\\"  是一个运算符,是用于比较两个对象地址值或基本数据类型之间的值是否相等。它的来源可以追溯到C语言,以及受C语言影响的许多其他编程语言。 Java中的equals() 是一个方法,可重写该方法用于比较两个对象属性内容是否相等的方法。该方法继承自

    2024年02月13日
    浏览(20)
  • equals与Hashcde的区别

    equals与hashcode这两个方法都是从Object类中继承过来的。 hashCode():计算出对象实例的哈希地址,并且返回该地址,称哈希函数,又称散列表。 equals():反映的是对象的内存地址或者对象的内容是否相等。 Objeact类实现equals()是对两个对象的地址进行比较(即比较是否相同,也就

    2024年02月16日
    浏览(25)
  • 【JAVA基础】== 与 equals区别

    它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型 比较的是值,引用数据类型 比较的是内存地址)。 基本数据类型 :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。 引用数据类型 :

    2024年02月11日
    浏览(29)
  • Java 中 == 与 equals() 的区别

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包