当前位置:  技术问答>java相关

你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。

    来源: 互联网  发布时间:2015-03-03

    本文导语:  这样讲对吗? | 给你一份我整理的equals()和==的比较 因为equals()方法是可以被重载的,但是按照java语言的本意来说:如果没有重写(override)新类的equals(),则该方法和 == 操作符一样在两个...

这样讲对吗?

|
给你一份我整理的equals()和==的比较

因为equals()方法是可以被重载的,但是按照java语言的本意来说:如果没有重写(override)新类的equals(),则该方法和 == 操作符一样在两个变量指向同一对象时返回真,但是java推荐的是使用equals()方法来判断两个对象的内容是否一样,就像String类的equals()方法所做的那样:判定两个String对象的内容是否相同,而==操作符返回true的唯一条件是两个变量指向同一对象。另外==操作符两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。首先 == 可以比较 基本类型和引用类型,而比较引用类型时, 比较首地址。 而equal 只能比较引用类型 ,比较首地址。但是 equal在比较封装类时 比较的是数据类型和值的大小
引用类型进行引用比较,但有四个类型除外:File、Date、String、封装类。对它们用equals()进行比较时,如果类型一致,且与它们相联系的内容一致,则返回true。

|
由于Java没有操作符重载,所以==只有一个意思,大概就是用来比较2个引用类型的
reference是否指向同一个“内存对象”(即内存地址是否相同),或是两个基本类型
的值是否相同

java.lang.Object::equals(...)缺省代码是这样的:
    public boolean equals(Object obj) {
return (this == obj);
    }
所以:
 - 你如果不override equals(...)得话,就和==一样
 - 你可以按照一定的策略来任意override equals(...),但要注意
   这时你可能要同时override下列2个(如在EJB中):
   java.lang.Object::equals(...)    
   java.lang.Object::hashCode(...)
   有时还要override第3个: 
   java.lang.Object::clone(...)    
   即:要保持这3个行为要么都符合你的策略,要么都符合缺省的策略,
   否则某些操作(如涉及java.util.Hashtable)会出现不一致的错误


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何判断两个目录名是不是同一个?
  • 看看会输出什么?结果是equal b,==在string里不是比较两个串是不是相等嘛?
  • java判断两个时间是不是同一天的方法
  • Javamail要JavaBeans Activation Framework 的支持,是什么意思?是不是也要下载JavaBeans Activation Framework?他是不是也是一个包?是不
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 网站的站内搜索是怎么实现的?怎么做?在网页的头元素中有一关键词元素,是不是就是给站内搜索用的?如果我在Sina中登记我的网站,那么是不是
  • java中有没有这样的函数就是判断一个字符串里面是不是含有另外一个字符串!例如 abcdef 里面查找是不是含有de谢谢了~初学者
  • java 能做什么系统?CS是不是不行呀?开发效率岂不是很低
  • ●J2SDK和JDK是不是一个东西?如果不是,那它是什么?●
  • 在内核为2.4版本下开发的程序在2.6下编译是不是很容易会发生错误?不是应该往上兼容吗?
  • 急!!谁了解macintosh?能不能给我介绍介绍?是不是跟linux差不多?使用开发工具JDK,这是不是不JAVA?
  • 关于FIFO算法的问题(是不是页面“命中”和“淘汰”的页面不是的唯一啊
  • Shell中是不是只有“空串”没有NULL?
  • locate是不是不搜寻/tmp下面的文件
  • 请教!UNIX是不是很难啊
  • 我装了zhcon,启动后屏幕刷新太慢,是不是.....
  • 实现snmp时mib文件是不是必须的?
  • solaris 8.0是不是32 bit的?
  • 进程信号是不是也是socket?
  • 请问:怎么判断linux服务器的网站系统是不是中毒了?
  • sendmail是不是linux默认安装的!
  • 大家说说,微软的jdbc是不是很烂,好多方法不支持
  • 在Redhat 9 中,是不是只要安装过的软件都能在开始菜单中找到?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3